文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
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 假設使用金鑰可能需要許多金鑰查詢,且全表掃描會更快。

對於小型表格,全表掃描通常是適當的,效能影響可以忽略不計。對於大型表格,請嘗試下列技巧來避免最佳化工具錯誤地選擇全表掃描: