<>面试经常被问到的SQL优化

<>
  作为一个后端开发程序猿,在平时工作中与数据库打交道是必不可少的,不管是在项目中,还是在以后跳槽去其他公司,对于MySQL的基本功我们必须得掌握,先分享一些常见的SQL优化小栗子供大家参考参考,有什么不对的希望大家在下方留言一起探讨。

<>1. 不要把SELECT子句写成 SELECT *

SELECT * FROM t_emp;

<>2. 对ORDER BY排序的字段设置索引

<>3. 少用IS NULL

SELECT ename FROM t_emp WHERE comm IS NULL; #不使用索引
SELECT ename FROM t_emp WHERE comm =-1;

<>4. 尽量少用 != 运算符

SELECT ename FROM t_emp WHERE deptno!=20; #不使用索引
SELECT ename FROM t_emp WHERE deptno<20 AND deptno>20;

<>5. 尽量少用 OR 运算符

SELECT ename FROM t_emp WHERE deptno=20 OR deptno=30; #不使用索引
SELECT ename FROM t_emp WHERE deptno=20
UNION ALL
SELECT ename FROM t_emp WHERE deptno=30;

<>6. 尽量少用 IN 和 NOT IN 运算符

SELECT ename FROM t_emp WHERE deptno IN (20,30); #不使用索引
SELECT ename FROM t_emp WHERE deptno=20
UNION ALL
SELECT ename FROM t_emp WHERE deptno=30;

<>7. 避免条件语句中的数据类型转换

SELECT ename FROM t_emp WHERE deptno=‘20’;

<>8. 在表达式左侧使用运算符和函数都会让索引失效

SELECT ename FROM t_emp WHERE salary*12>=100000; #不使用索引
SELECT ename FROM t_emp WHERE salary>=100000/12;
SELECT ename FROM t_emp WHERE year(hiredate)>=2000; #不使用索引
SELECT ename FROM t_emp
WHERE hiredate>=‘2000-01-01 00:00:00’;

<>  关于SQL优化还有很多很多,后续我也会为大家打来更详细的的SQL优化细节,及MySQL调优方面的相关知识。

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信