首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

MySQL 5.0官方手冊優化章節精讀:ORDER BY與LIMIT優化策略(上)

     編輯:PHP 相關知識

7.2.9 ORDER BY優化核心原則

MySQL嘗試使用索引滿足排序,避免額外filesort操作。

可用索引排序的場景

-- 1. 索引順序完全匹配
SELECT * FROM t1 ORDER BY key_part1, key_part2;

-- 2. WHERE固定前綴,ORDER BY後綴
SELECT * FROM t1 WHERE key_part1 = const ORDER BY key_part2;

-- 3. GROUP BY同理
SELECT * FROM t1 WHERE key_part1 = const GROUP BY key_part2;

-- 4. 降序索引(MySQL 8.0+支持降序索引)
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC;

無法使用索引排序的場景

  • ORDER BY多個不同索引列:ORDER BY key1, key2
  • 非連續索引部分:WHERE key2=const ORDER BY key_part2
  • 混合ASC/DESC:ORDER BY key_part1 DESC, key_part2 ASC
  • WHERE索引與ORDER BY索引不同:WHERE key2=const ORDER BY key1
  • 多表JOIN且排序列不在第一個常量表

強制優化手段

  • ORDER BY NULL:禁止GROUP BY隱式排序
  • 增加sort_buffer_size、read_rnd_buffer_size
  • 設置tmpdir指向多物理磁盤目錄(分號/冒號分隔)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved