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 ,因为 “ * ” 转化为具体的列名,需要耗费时间。

 

posted @ 2021-02-21 21:10  每天努力一小步  阅读(148)  评论(0)    收藏  举报