文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


10.2.1.23 避免全表掃描

EXPLAIN 的輸出在 MySQL 使用全表掃描來解析查詢時,會在 type 欄位中顯示 ALL。這通常在以下情況下發生:

  • 表格太小,執行全表掃描比費力進行索引查閱更快。這在少於 10 列且列長度較短的表格中很常見。

  • 在索引欄位的 ONWHERE 子句中沒有可用的限制。

  • 您正在比較索引欄位和常數值,而且 MySQL 已計算出 (基於索引樹) 這些常數涵蓋了表格的太大部分,因此全表掃描會更快。請參閱 章節 10.2.1.1,「WHERE 子句最佳化」

  • 您正在透過另一個欄位使用基數較低的索引 (許多列符合索引值)。在這種情況下,MySQL 會假設使用索引可能需要多次索引查閱,因此全表掃描會更快。

對於小型表格,全表掃描通常是適當的,且效能影響微不足道。對於大型表格,請嘗試下列技術,以避免最佳化工具錯誤地選擇全表掃描: