SQL语句查询优化方法
建立索引并命中索引,在查询的时候,要尽量让数据库引擎使用索引。加入explain执行计划
1.尽量避免使用select *
2.尽量避免使用!=
3.尽量避免使用or
优化方式:可以用union代替or。如下:
SELECT * FROM t WHERE username="hkw"
UNION
SELECT * FROM t WHERE nickname="jon"
4.尽量避免使用in 和not in
优化方式:如果是连续数值,可以用between代替
如果是子查询,可以用exists代替。如下:
SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t2 WHERE t1.username = t2.username)
5.尽量避免在字段开头模糊查询
SELECT * FROM t WHERE username LIKE '%li%'
优化方式:尽量在字段后面使用模糊查询。如下:
SELECT * FROM t WHERE username LIKE 'li%'
6.尽量避免进行null值的判断
SELECT * FROM t WHERE score IS NULL
优化方式:可以给字段添加默认值0,对0值进行判断。如下:
SELECT * FROM t WHERE score = 0
7.尽量避免在where条件中等号的左侧进行表达式、函数操作
SELECT * FROM t2 WHERE score/10 = 9
SELECT * FROM t2 WHERE SUBSTR(username,1,2) = 'li'
优化方式:可以将表达式、函数操作移动到等号右侧。如下:
SELECT * FROM t2 WHERE score = 10*9
SELECT * FROM t2 WHERE username LIKE 'li%'