MySQL 索引(INDEX)教學
索引(Index)是用來加快資料表查詢效率的資料結構,尤其在大量資料或複雜條件查詢中能顯著提升效能。
為什麼需要索引?
加速
SELECT查詢速度。提高
JOIN、WHERE條件與ORDER BY操作效能。強制欄位唯一(
UNIQUE索引)。
注意:雖然索引能提升查詢效能,但也會增加
INSERT、UPDATE、DELETE操作的成本,並佔用額外的儲存空間。
常見索引類型
類型
說明
PRIMARY KEY
主鍵索引,自動建立唯一且非空索引
UNIQUE
唯一索引,避免重複值
INDEX / KEY
一般索引,可加速查詢但允許重複值
FULLTEXT
全文索引,用於文字搜尋(僅支援 MyISAM 或 InnoDB 新版本)
SPATIAL
空間索引,用於地理資訊欄位
索引的資料結構:B-Tree
MySQL 中大部分的索引預設使用 B-Tree 結構。
B-Tree(Balanced Tree):適用於範圍查詢(例如
BETWEEN、>,<)與排序操作。Hash Index:主要由 Memory 引擎支援,僅適合等值查詢(不支援範圍查詢)。
建立索引方式
1. 使用 CREATE INDEX
CREATE INDEX2. 建立唯一索引
3. 建立複合索引(多欄位)
使用 ALTER TABLE 新增索引
ALTER TABLE 新增索引在建立資料表時加入索引
刪除索引
查詢資料表索引資訊
適當的索引設計可大幅提升資料庫查詢效能,建議搭配 EXPLAIN 分析查詢計畫,以找出最佳化的欄位索引組合。
📌 小技巧:避免對選擇性(selectivity)太低的欄位建立索引,例如性別(M/F)或布林值,否則可能反而降低效能。
Last updated