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

MySQL 索引失效與生效場景全解析:避開效能陷阱

     編輯:MySQL 資料庫相關知識

索引是查詢效能的關鍵,但錯誤的寫法會導致索引失效,造成全表掃描。本文整理實戰中常見的索引失效與生效場景,助你寫出高效 SQL。

❌ 索引失效的 6 大典型場景

  1. WHERE 條件使用不等於運算子:WHERE column != 'value' 將無法使用索引。
  2. WHERE 條件對欄位使用函數:WHERE DAY(date_col) = 1 導致索引失效,應改寫為範圍查詢。
  3. JOIN 關聯欄位資料型別不一致:主鍵與外鍵型別必須完全相同,否則即使建立索引也會被忽略。
  4. LIKE/REGEXP 以萬用字元開頭:LIKE '%abc' 無法用索引;LIKE 'abc%' 則可正常使用。
  5. ORDER BY 條件非查詢條件表達式:且涉及多表查詢時,索引對排序加速效果有限。
  6. 欄位基數過低(重複值極多):如性別(M/F)、狀態(0/1),建立索引收益極低,優化器傾向全表掃描。

✅ 索引生效的通用原則

除上述失效場景外,以下情況索引通常有效:

  • WHERE 條件欄位有索引
  • ORDER BY 排序欄位有索引
  • JOIN 關聯欄位(主鍵/外鍵)有索引且型別一致

實戰建議:若不確定索引是否生效,使用 EXPLAIN 分析執行計畫,對比執行時間即可驗證。

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