B+ 樹結構,將無序全表掃描(O(N))轉為有序樹搜尋(O(log N))。1000 行表建索引後範圍查詢快 100 倍;若需訪問幾乎全表,順序掃描反而更快(避免隨機 I/O)。
WHERE 條件列建索引 → 直接定位 → 避開全表掃描。
三表各 1000 行,無索引聯結需掃 10 億組合;建索引後外層掃 1000 行,內層索引定位 O(log N),理論提速百萬倍。
建立 INDEX(col1, col2, col3) 等同擁有:
(col1)(col1, col2)(col1, col2, col3)失效案例:WHERE col2=...、WHERE col2=... AND col3=...、WHERE col1=... OR col2=... 均無法使用複合索引。
LIKE 'Patrick%' ✅ 索引生效(範圍:'Patrick' <= col < 'Patricl')LIKE 'Pat%_ck%' ✅ 索引生效(前綴 'Pat' 定界)LIKE '%Patrick%' ❌ 通配符開頭LIKE other_col ❌ 非常量INDEX(state, city, zip) 支援 state / state+city / state+city+zip=, >, >=, <, <=, BETWEEN, LIKE 'prefix%';STRCMP() 等函數無效MAX()/MIN() 直接走索引極值ORDER BY/GROUP BY 命中最左前綴可避免 filesort索引是查詢優化的「核武器」:優先用好、精準建設、定期審計。大表無索引 = 自殺;濫用索引 = 慢性自殺。平衡之道在於「以查詢負載為導向,以寫入代價為約束」。