面试经常被问到的SQL优化

面试经常被问到的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调优方面的相关知识。

你可能感兴趣的:(MySQL,基础面试题,java)