sql 编译顺序 from... on... join... where... order by... group by... having... select...
查看sql语句性能: explain 查询sql语句
1. 最佳作前缀,使用索引顺序(按编译顺序)与定义索引时顺序一致,若该字段有跳过、反序,该字段及后面字段索引失效
2. where条件中一切不是=的操作大概率会使索引失效,包括in、!=、>、is null、计算、函数等等
3. 查询字段与条件字段不一致时使用子查询,避免临时表出现
4. 若用了复合索引,尽量使用全部索引字段
5. 能不查询多字段时,尽量使用索引覆盖
6. 使用like模糊查询时,按关键字左匹配,即‘x%’,若使用'%x%',索引失效
7. or会使全部索引失效
8. 尽量不要导致类型转换,否则索引失效
9. 使用order by时,根据表中数据量调整单路还是双路查询,也可以调整buffer区大小:如set_max_length_for_sort_data = 1024 (单位byte)
10. 避免使用select *...
11. 分页偏移量大时,尽量使用子查询 select * from tab where id>=(select id from tab limit 100000,1) limit 100;