首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 避免全表掃描的四大觸發條件與三種優化手段

     編輯:MySQL 資料庫相關知識

觸發全表掃描的四種情況

  1. 表極小(記錄 < 10 且行長短),全表掃描比索引查找更快。
  2. 無合適用於 ON 或 WHERE 的索引欄位。
  3. 索引欄位與常數比較,MySQL 估算常數覆蓋大部分資料,全表掃描更快。
  4. 使用基數極小(大量記錄匹配)的索引,MySQL 認為索引查找成本過高。

大表避免優化器誤判的三種技巧

  1. ANALYZE TABLE tbl_name 更新索引鍵分佈統計資訊。
  2. 使用 FORCE INDEX 強制指定索引:
    SELECT * FROM t1, t2 FORCE INDEX (index_for_column) WHERE t1.col_name=t2.col_name;
  3. 啟動參數 --max-seeks-for-key=1000 或執行 SET max_seeks_for_key=1000,告知優化器索引搜尋不超過 1000 次。

小表全表掃描通常無妨,大表需主動干預優化器決策。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved