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

ORDER BY 排序与多列排序

按一列或多列排序,支持 ASC/DESC 与表达式;排序列有合适索引时可用索引顺序避免 filesort。

数据库速查数据更新于 2026-10-12
用途结果排序
语法ORDER BY 列1 [ASC|DESC], 列2 …
增强ORDER BY FIELD() / 表达式 / 8.0 的降序索引

常用示例

常用示例
SELECT id, qty FROM orders ORDER BY qty DESC;
SELECT id FROM orders ORDER BY status, created_at DESC LIMIT 50;
SELECT id FROM orders ORDER BY FIELD(status,'pending','paid','shipped');

配合索引

配合索引
ALTER TABLE orders ADD INDEX idx_status_created (status, created_at DESC);
排序 + LIMIT 是分页标配;执行计划里出现 Using filesort 意味着可能发生了额外排序。

易错点

  • 多列排序时每列方向可不同,但与索引方向不匹配仍会 filesort
  • 对无排序键的等值结果集排序没有稳定顺序,分页翻页可能重复或漏行

数据来源与参考

  • MySQL 8.0 Reference Manual: ORDER BY Optimization

相关工具

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