SQL优化

1、避免函数索引

select * from table where YEAR(date) >= 2020;

由于MySQL不支持函数索引,所以即使date字段有索引,也会进行全表扫描。

应该将SQL语句改成:select * from table where date >= 2020-01-01;

2、用 in 替代 or

低效查询:select from table where id =10 or id = 20 or id = 30;
高效查询:select
from table where id in (10,20,30);

3、在 like 中,双百分号无法使用到索引

不可以使用到索引:select * from table where name like '%hi%';

可以使用到索引:select * from table where name like 'hi%';

4、避免数据类型不一致,导致无法使用索引

比如id定义为int

使用 select from table where id = '10000' 语句,MySQL无法使用索引
使用 select
from table where id = 10000 语句,MySQL可以使用索引

5、分组统计时,禁止排序来提升性能

MySQL在默认情况下,会对group by 的字段进行排序,想要避免排序带来的消耗,可以指定 order by null 来禁止排序

select goods_id,count(*) from table group by goods_id order by null

6、尽量使用批量插入,而不是循环插入

合并多条插入语句为一条

7、尽量避免使用select *

换成使用select 字段列表 from table