概述:

  • 排序也可以走索引
  • 覆盖索引的情况下,如果走到了排序字段,那后面的索引字段就没法用了,只能回表取完整数据再筛了。
  • 排序有两种情况:

  • mysql权衡两种排序方式会根据,数据量、回表消耗等进行计算,

  • 两种方式没有孰优孰劣
  • 单路排序
    • 是一次性取出满足条件行的所有字段,然后在sort buffer中进行排序;用trace工具可以看到sort_mode信息里显示< sort_key, additional_fields >或者< sort_key, packed_additional_fields >
  • 双路排序
    • 是首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行 ID,然后在 sort buffer 中进行排序,排序完后需要再次取回其它需要的字段;用trace工具可以看到sort_mode信息里显示< sort_key, rowid >