MySQL之——sql优化
SQL的优化需要注意以下几点:
1、应尽量避免全表扫描,在where和order by涉及的列上建立索引。
2、应尽量避免在where子句中对字段进行null值判断,否则将放弃索引而进行全表扫描。可以设置一个默认值(0),确保表中没有null值。
SELECT * FROM t1 WHERE num IS NULL SELECT * FROM t1 WHERE num = 0
3、尽量避免在where子句中使用 != 或 <> 或 or 或 in 或 not in ,否则将放弃索引而进行全表扫描。
or 可以使用如下方式:
SELECT id FROM t1 WHERE num = 1 UNION ALL SELECT id FROM t1 WHERE num = 2
in若是连续的数值,可以使用between:
SELECT id FROM t1 WHERE num IN(1,2,3,4) SELECT id FROM t1 WHERE num BETWEEN 1 AND 4
4、应尽量避免对where子句中的列进行表达式或者函数操作,否则将放弃索引而进行全表扫描。
表达式操作:
SELECT id FROM t1 WHERE num/2=100 改为 SELECT id FROM t1 WHERE num=100*2
函数操作:
SELECT id FROM t1 WHERE SUBSTRING(name,1,3)='abc' 改为 SELECT id FROM t1 WHERE name LIKE 'abc%'
5、like的使用避免以‘%’开头。
6、不要使用select * from t ,因为 “ * ” 转化为具体的列名,需要耗费时间。
浙公网安备 33010602011771号