萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 索引原理、類型、多列索引最左前綴與選擇策略深度解析

索引是 B+ 樹結構,能將全表掃描降為對數級查找。本文詳細講解普通/唯一/主鍵/全文索引、單列 vs 多列索引、最左前綴原理、WHERE/JOIN 條件列選擇索引、比較操作符對索引使用的影響。

索引類型

  • 普通索引:CREATE INDEX idx_name ON t(col)
  • 唯一索引:CREATE UNIQUE INDEX ...
  • 主鍵:PRIMARY KEY (col),隱含 NOT NULL + UNIQUE。
  • 全文索引:FULLTEXT,僅 VARCHAR/TEXT,3.23.23+ 支援。

單列 vs 多列索引實例

表 people(id, firstname, lastname, age, townid),查詢 firstname='Mike' AND lastname='Sullivan' AND age=17。
單列索引僅能縮小至 firstname='Mike' 再回表過濾;
多列索引 (firstname, lastname, age) 可一次定位目標行,無需回表。

最左前綴原理

多列索引 (a,b,c) 等價於同時擁有 (a)、(a,b)、(a,b,c) 索引。
可用於:WHERE a=1、WHERE a=1 AND b=2、WHERE a=1 AND b=2 AND c=3。
不可用於:WHERE b=2、WHERE c=3、WHERE b=2 AND c=3。

索引列選擇策略

  1. 出現在 WHERE、JOIN ON、GROUP BY、ORDER BY 的列。
  2. 高選擇性 (基數大) 列優先。
  3. 避免對低基數列 (如性別) 建單列索引。
  4. 操作符 =, >, >=, <, <=, BETWEEN, IN, LIKE 'prefix%' 可用索引;LIKE '%suffix'、函數運算、!= 導致全掃。
copyright © 萬盛學電腦網 all rights reserved