首页/数据/数据库速查/降序索引(Descending Index,8.0)
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条
性能与调优57 条
Redis 命令96 条Redis 运维与场景124 条

降序索引(Descending Index,8.0)

8.0 真正支持 DESC 语义的索引:混合排序(a ASC, b DESC)场景下消除 filesort;5.7 的 DESC 只是语法糖实际仍升序存储。

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

创建与验证

创建与验证
ALTER TABLE appdb.metrics ADD INDEX idx_a_b (a ASC, b DESC);
EXPLAIN SELECT * FROM appdb.metrics ORDER BY a ASC, b DESC LIMIT 100;
-- Extra 不再出现 Using filesort 即生效
适用ORDER BY 混合升降序
8.0 变化降序真实存储,扫描方向即查询方向
代价索引结构与升序不同,升级迁移时重建
纯升序或纯降序场景无需降序索引:B+ 树可反向扫描。

易错点

  • 沿用 5.7 直觉给所有排序列加 DESC:8.0 会真实建成降序,方向搞反反而制造新 filesort
  • 低版本导出的 DDL 里 DESC 被静默忽略:升级后行为变化要评估

数据来源与参考

  • MySQL 8.0 Reference Manual: Descending Indexes

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌