WHERE col > 10, col >= 10, col = 10, col < 10, col <= 10, col IS NULL, col BETWEEN 10 AND 20。WHERE name LIKE 'abc%'(不以通配符開頭)。FROM t1 JOIN t2 ON t1.col = t2.key_col(被驅動表關聯列有索引)。SELECT MIN(key2), MAX(key2) FROM t WHERE key1 = 10(索引順序掃描首/尾)。ORDER BY key1, key2, key3(索引順序輸出,無 FileSort)。SELECT key3 FROM t WHERE key1 = 1(查詢列全部在索引中,回表)。WHERE key1 > 1 AND key1 < 90(覆蓋 90% 數據),優化器判斷全表掃描更快(順序 I/O vs 隨機 I/O)。ENGINE=MEMORY 僅支持 =/<=> 走 HASH 索引。WHERE key2 = 1(複合索引 (key1, key2) 無法利用)。WHERE name LIKE '%abc%'(B+樹無法前綴定位)。WHERE key1 = 1 ORDER BY key2(檢索用 key1,排序需臨時表)。EXPLAIN SELECT * FROM t WHERE key1 = 1 ORDER BY key2;
-- 關鍵列:
-- type: ref/range/ALL (ALL=全表掃描)
-- key: 實際使用的索引名
-- rows: 預估掃描行數
-- Extra: Using where / Using index / Using filesort / Using temporary
SELECT * FROM t FORCE INDEX (idx_key1) WHERE key1 = 1;
SELECT * FROM t IGNORE INDEX (idx_key1) WHERE key1 = 1;
僅作臨時干預,**根治需修正統計信息 ANALYZE TABLE 或重寫 SQL/調整索引**。