首页 > 数据库技术 > 详细

常见问题:MySQL/排序

时间:2019-09-10 22:12:21      阅读:85      评论:0      收藏:0      [点我收藏+]

MySQL的排序分为两种,通过排序操作和按索引扫描排序。

按索引顺序扫描是一种很高效的方式,但使用的条件较为严格。

  1. 如果索引不能覆盖查询所需的全部列,那么就无法使用按索引扫描排序。
  2. 只有当索引的列顺序和order by子句的顺序完全一致,并且所有列的排序方向都一样时,mysql才能使用索引来对结果排序。(除非前列为常量,但这样的操作是否索引生效,因数据库而异不推荐)
  3. 关联表查询时,只有当order by子句引用的字段全部为第一个表时,才会使用索引做排序。

举一个前列为常量,第二列索引有效的例子

-- 第一列提供常量条件,使用第二列进行排序,这两列组合在一起,形成索引最左前缀,所以可以索引排序,没有出现filesort
EXPLAIN SELECT rental_id, staff_id FROM rental
WHERE rental_date = '2005-05-25'
ORDER BY inventory_id DESC;

常见问题:MySQL/排序

原文:https://www.cnblogs.com/cielosun/p/11502990.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!