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