-
适当的索引
1)索引就相当于字典的目录,按照索引查找就可以直接定位具体页数,不用整本字典一页一页的查找,效率自然是不言而喻。
2)对于历史数据不太关注的场景,比如订单,通常来说,3年之前的订单数据,很少会需要查询到,最近的订单才是最常用的,那么可以考虑把订单日期作为索引的一个列创建
3)经常需要where查询的字段也作为索引的一个列创建
-
尽量不要有空判断的语句,因为空判断将导致全表扫描,而不是索引扫描。
对于空判断这种情况,可以考虑对这个列创建数据库默认值
-
尽量不要使用不等于条件,因为,这会导致全表扫描
对于不等于这种情况,考虑改为范围查询解决
-
尽量不要使用or条件,因为,这会导致全表扫描
对于or这种情况,可以改为 分别查询,然后 union all
-
尽量不要使用左右模糊查询,因为,这会导致全表扫描
对于左右模糊查询的情况,试着改为右侧模糊查询,这样是可以索引查找的
-
尽量不要在执行算数运算后的比较,因为,函数、算术运算或其他表达式运算通常将导致全表扫描
对于这种情况,可以考虑冗余部分数据到表中
-
尽量使用exists代替in
-
尽量避免一次性返回大数据量,可以考虑分页返回
抄袭来源:https://jingyan.baidu.com/article/09ea3ede5acc37c0aede392c.html 有详细合理的sql语句优化手段解释,如上显示https://www.jb51.net/article/111015.htm 常见的sql语句优化方法主要针对select语句https://www.cnblogs.com/cnjavahome/p/4230534.html 对于上面做一个补充,辅助作用https://blog.csdn.net/yueqi1125/article/details/80683807 有select 优化,insert优化,update与delete 优化常见的sqlselect 优化 底下又分为避免索引失效insert优化update与delete优化