首页/数据/SQL 速查/降序索引(MySQL 8.0)
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条变更与事务52 条
性能与执行计划72 条

降序索引(MySQL 8.0)

8.0 起支持真正的降序索引:多列混合排序方向(如 a ASC, b DESC)可被索引直接满足,避免额外排序。

SQL 速查数据更新于 2026-10-12

示例

示例
ALTER TABLE events
  ADD INDEX idx_a_asc_b_desc (a ASC, b DESC);

SELECT * FROM events ORDER BY a ASC, b DESC LIMIT 20;

-- 8.0 之前 DESC 关键字被解析但忽略:混合方向只能靠额外排序
适用多列排序方向不一致的场景
单列 DESC查询单列降序在 8.0 之前也可反向扫描索引,无需降序索引
验证EXPLAIN 输出中确认没有 Sort 步骤

易错点

  • 以为单列 DESC 一直需要降序索引:反向扫描同样可用;降序索引解决的是混合方向与精确匹配
  • 在旧版本沿用降序语法:5.7 及更早会忽略 DESC,实际计划与预期不符

数据来源与参考

  • MySQL 8.0 Reference Manual · Descending Indexes
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌