总体优化思路:
1.查询更少的数据(需要哪些就查哪些)
2.扫描更少的行(加索引,索引优化)
3.建立更少的连接次数(批量操作)
4.搭配explain检验调试效果
一:基本写法优化
1.禁止使用 * ,需要什么字段就取什么字段。
2.对于条件中等号两边类型要一致,字符串类型不加单引号会导致索引失效。
3.尽量少使用order by,对于多个字段要排序的使用组合索引。
4.对于group by语句要先过滤后分组。
5.在查询时尽量少使用null,可给字段设置默认值。
6.少使用like,需要使用时,尽量用 abd% ,不要将%用在最前面,会导致索引失效。
7.在where后面少使用函数或算术运算,会导致索引失效。
8.distincit过滤字段要少,避免使用distinct * 。
9.不要超过5个表以上的连接。
二:建立合适的索引
1.对于高频筛选字段可以适当简历索引。
2.一个表的索引不要超过5个,多了会影响插入、修改效率。
3.不要对值是有限重复的字段建立索引,如性别,分辨率太低没必要。
4.使用组合索引一定要遵守最左原则。
三:替代优化
1.不要使用not in和<>,会破坏索引结构,<>可以使用<和>代替。
2.使用join连接代替子查询。
3.not in可以使用not exists代替,遵守小表驱动大表原则。
四:分页优化
1.当翻页要翻很多的时候,将limit (from) ,(size)替换成where id>#lastId},select * from table limit 50000,50000替换成select * from table where id>50000 limit 50000,id为前端传回上一次查询的最后一条数据的id。(id为自增)
2.通过子查询方式优化:select * from table where id in (select id from table where id >50000 limit 50000,id)。
浙公网安备 33010602011771号