萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL ORDER BY 語句用法與索引優化策略

基本語法

SELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC];

索引優化規則

1. 純 ORDER BY

SELECT col1, col2 FROM tbl ORDER BY sort_col;
-- 在 sort_col 上建索引即可優化

2. WHERE + ORDER BY

SELECT col1, col2 FROM tbl WHERE colX = val ORDER BY sort_col;
-- 建立聯合索引 (colX, sort_col)

注意: 若 WHERE colX IN (val1, val2...) 匹配多值,無法利用索引優化 ORDER BY。

3. WHERE + 多字段 ORDER BY

SELECT * FROM tbl WHERE uid=1 ORDER BY x, y LIMIT 0,10;
-- 最佳索引:(uid, x, y) 而非 (x, y, uid)

索引生效與失效場景

SQL 模式是否用索引說明
ORDER BY key_part1, key_part2...✅順序與索引一致,全升序或全降序
WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC✅WHERE 與 ORDER BY 使用同一索引前綴,方向一致
ORDER BY key_part1 DESC, key_part2 ASC❌混合 ASC/DESC 導致索引失效
WHERE key2=const ORDER BY key1❌WHERE 用索引 key2,ORDER BY 用 key1,不同索引
ORDER BY key1, key2❌涉及多個不同索引列

核心原則: WHERE 條件列與 ORDER BY 列組成的聯合索引順序一致、排序方向一致(全 ASC 或全 DESC)時,MySQL 可利用索引避免 Filesort。

copyright © 萬盛學電腦網 all rights reserved