关于mysql中order by查询的问题

select * from tb_order ORDER BY order_date,id limit 700000,10;

select id from tb_order ORDER BY order_date,id limit 700000,10;

这两条语句,第一条执行138秒,第二条7秒,order_date没有索引,explain结果都是ALL,为啥差距这么大?

阅读 2.8k
4 个回答

看下都时间都耗在哪了?

一般来说 * 和指定列的性能差距不该这么大,看看是不是你这个表里有存 blob 之类的大字段,时间都耗费在网络传输了上了?

是覆盖索引,只查id的时候不用回表。

刚才重启了电脑,又试了下,时间一个90+秒,一个2秒IMG20200720_145732.jpgIMG20200720_145736.jpg

回表问题。
select id 直接在索引树中取,不需要查询数据库
select * 先在索引树取得索引,再去数据库查询所有字段数据。

推荐问题