请教 索引倒序扫描的问题 ( Backward index scan)

SQL 排序是根据主键 id 来排的,但是 explain 显示已经命中了非聚簇索引,为什么还能够使用 Backward index scan 呢?

select
  *
from
  `transport_bills`
where
  `driver_uuid` = '1128051427252'
  and `freight_bill_pay_time` between '2023-11-01 00:00:00' and '2023-11-30 23:59:59'
order by
  `id` desc

请教 索引倒序扫描的问题 ( Backward index scan)

我未曾珍惜的,我不再拥有?‍?️
讨论数量: 2

二级索引上隐式包括主键的值,这就是说上面的索引不仅包括列 driver_uuid,而且包括主键 id 的值,因此 order by id desc 是可以用到该索引的,从右往左扫描即可,这可以避免额外的排序,提高性能。

1个月前 评论
haodudecao (楼主) 1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!