关于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.6k
4 个回答

看下都时间都耗在哪了?

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏