mysql 添加limit,sql 语句执行时间变长的问题
调优一个sql语句,在语句本身是很简单的查询
select * from a where id > 1 order by addtime desc limit 10
查询的结果集很小 只有10
修改为 limit 1后,依然很慢大概2s的查询时间。
explain 发现没有使用索引,去掉limit后,查询出几千数据,0.02s的查询时间,
后来查证mysql官方文档,在order 的同时使用limit,将会对所有数据进行扫描重排,所以效率差。
而只需要10条数据,查询出再程序上取略麻烦。
改为:
select * from (select * from a where id > 1 order by addtime desc) b limit 10
效率很高,而且无序再程序上进行改动了