示例
示例
-- 覆盖索引:只取索引中的列
EXPLAIN SELECT id, user_id, created_at
FROM orders
WHERE user_id = 100;
-- Extra: Using index
-- SELECT * 多出的列迫使回表
EXPLAIN SELECT * FROM orders WHERE user_id = 100;
-- 另一种常见坑:用 INSERT ... SELECT * 强绑结构
INSERT INTO orders_bak (SELECT * FROM orders); -- 表加列即错位| IO | 少读不需要的列;大字段(TEXT/BLOB/宽 VARCHAR)收益明显 |
|---|---|
| 覆盖索引 | 列清单越精确越容易被索引覆盖,避免回表 |
| 稳定性 | 显式列清单对表加列不敏感,读取端不受影响 |