如果查询包括GROUP BY但用户想要避免排序结果的消耗,则可以指定ORDER BY NULL禁止排序
select payment_date, sum(amount) from payment group by payment_date order by null
优化嵌套查询
子查询可以被更有效率的连接(JOIN)替代
MySQL如何优化OR条件
OR之间的每个条件列都必须用到索引
优化分页查询
通过创建覆盖索引能够比较好地提高性能
在索引上完成排序分页的操作,最后根据主键关联回原表查询所需要的其他列内容
优化前
select film_id, description from film order by title limit 50,5
优化后
select a.film_id, a.description from film a inner join (select film_id from film order by title limit 50,5)b on a.film_id = b.film_id
把LIMIIT查询转换成某个位置的查询
优化前
select * from payment order by rental_id desc limit 410,10
优化后
select * from payment where rental_id
注意,这样把LIMIT m,n 转换成LIMIT n的查询,只适合在排序字段不会出现重复值的特定环境,能够减轻分页翻页的压力;如果排序字段出现大量重复值,而仍进行这种优化,那么分页结果可能会丢失部分记录,不适用这种方式进行优化。