请教 索引倒序扫描的问题 ( 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
二级索引上隐式包括主键的值,这就是说上面的索引不仅包括列 driver_uuid,而且包括主键 id 的值,因此 order by id desc 是可以用到该索引的,从右往左扫描即可,这可以避免额外的排序,提高性能。