示例
示例
ALTER TABLE orders ADD INDEX idx_user_status_created (user_id, status, created_at);
EXPLAIN SELECT * FROM orders
WHERE user_id = 100 AND status LIKE 'p%' AND created_at > '2024-01-01';
-- Extra: Using index condition
-- 索引先用 user_id 定位,再用索引中的 status/created_at 过滤,最后才对命中行回表| 效果 | 不符合条件的行在索引层被滤掉,减少随机回表 |
|---|---|
| 代价 | 存储引擎读取索引条目本身有少量额外开销 |
| 开关 | optimizer_switch 中 index_condition_pushdown 控制;默认开启 |
ICP 只能过滤索引中已有的列;SELECT 里需要的其他列仍要走回表。