無索引時全表掃描,耗時與資料量線性相關。B+Tree 索引 (InnoDB 預設) 透過平衡樹結構,將查找複雜度降至 O(log n),極大提升查詢速度。但索引會增加寫入開銷,非越多越好。
WHERE col = ?、WHERE col > ? 等。INDEX (c1,c2,c3) 可支援 (c1)、(c1,c2)、(c1,c2,c3);(c2,c3) 無效,(c1,c3) 僅用到 c1。SELECT MIN(col) FROM tbl 直接走索引最左/最右葉節點。=, >, >=, <, <=, BETWEEN。LIKE 'Patrick%'、LIKE 'Pat%_ck%' (非萬用字元開頭) → 用到索引。LIKE '%Patrick%' 或 LIKE other_col → 全掃。col IS NULL 可用索引。LIKE '%string%' 且 string 長度 > 3 時,MySQL 採用 Turbo Boyer-Moore 演算法加速全掃,但仍非索引查找。ANALYZE TABLE 更新索引統計資訊,幫助優化器做正確決策。