|搞懂这些SQL优化技巧,面试横着走
BATJTMD 等大厂的面试难度越来越高 , 但无论从大厂还是到小公司 , 一直不变的重点就是对 SQL 优化经验的考察 。 一提到数据库 , 面试官就会问“先说一说你对 SQL 优化的见解吧?” 。
本文插图
图片来自 Pexels
SQL 优化已经成为衡量程序猿优秀与否的硬性指标 , 甚至在各大厂招聘岗位职能上都有明码标注 , 如果是你 , 在这个问题上能吊打面试官还是会被吊打呢?
有朋友疑问到 , SQL 优化真的有这么重要么?如下图所示 , SQL 优化在提升系统性能中是:成本最低和优化效果最明显的途径 。
如果你的团队在 SQL 优化这方面搞得很优秀 , 对你们整个大型系统可用性方面无疑是一个质的跨越 , 真的能让你们老板省下不止几沓子钱 。
本文插图
优化成本:硬件>系统配置>数据库表结构>SQL 及索引 。
优化效果:硬件<系统配置<数据库表结构
String result = ''嗯 , 不错 , ''; if (''SQL优化经验足'') { if (''熟悉事务锁'') { if (''并发场景处理666'') { if (''会打王者荣耀'') { result += ''明天入职'' } } } } else { result += ''先回去等消息吧''; } Logger.info(''面试官:'' + result );别看了 , 上面这是一道送命题 。
好了我们言归正传 , 首先 , 对于MySQL层优化我一般遵从五个原则:
- 减少数据访问:设置合理的字段类型 , 启用压缩 , 通过索引访问等减少磁盘 IO 。
- 返回更少的数据:只返回需要的字段和数据分页处理 , 减少磁盘 IO 及网络 IO 。
- 减少交互次数:批量 DML 操作 , 函数存储等减少数据连接次数 。
- 减少服务器 CPU 开销:尽量减少数据库排序操作以及全表查询 , 减少 CPU 内存占用 。
- 利用更多资源:使用表分区 , 可以增加并行操作 , 更大限度利用 CPU 资源 。
- 最大化利用索引 。
- 尽可能避免全表扫描 。
- 减少无效数据的查询 。
SELECT 语句 , 语法顺序如下:
1. SELECT 2. DISTINCT3. FROM
FROM# 选取表 , 将多个表数据通过笛卡尔积变成一个表 。ON# 对笛卡尔积的虚表进行筛选 JOIN
避免不走索引的场景
①尽量避免在字段开头模糊查询 , 会导致数据库引擎放弃索引进行全表扫描
如下:
SELECT * FROM t WHERE username LIKE '%陈%' 优化方式:尽量在字段后面使用模糊查询 。
如下:
SELECT * FROM t WHERE username LIKE '陈%' 如果需求是要在前面使用模糊查询:
- 使用 MySQL 内置函数 INSTR(str , substr)来匹配 , 作用类似于 Java 中的 indexOf() , 查询字符串出现的角标位置 。
推荐阅读
- 管理者|高水平的管理者都遵守的6条管理圣经,读懂这些,管理越来越顺
- 行业互联网|这些企业家点赞“青春之岛”!亚布力中国企业家论坛夏季峰会企业家座谈会在青举行
- 阿里巴巴|高水平的管理者都遵守的6条管理圣经,读懂这些,管理越来越顺
- AMD|又要性价比又要稳定?这些B450主板给你答案
- 中年|什么是余压监控系统?余压监控系统如何接线和安装?一篇文章搞懂
- 智能电视|《以家人之名》温情来袭,来康康这些细节打动你了吗?
- 群众网|微信打开这个功能,这些年你去过的地方都能看得一清二楚!
- 互联网|这些企业被评为我市电子商务示范企业!
- 深圳|除了腾讯华为,深圳这些“宝藏”公司你得知道!
- 科学|地球产生生命充满了巧合,这些巧合或是被“人为”刻意安排的