索引扫描(Index Scan)本来是为了“加速查询”而存在的,但在实际生产里,经常会出现**“明明走了索引,却还是很慢”的情况。下面按最常见原因 → 现象 → 解决思路**来说明。
现象
INDEX SCANROWS 很大原因
例子
SELECT *
FROM orders
WHERE user_id = 123;
user_id 有索引* 需要读整行 → 大量回表解决
CREATE INDEX idx_user ON orders(user_id) INCLUDE (status, amount);
现象
原因
status, gender)例子
WHERE status = 'ACTIVE'
解决
现象
常见写法
WHERE DATE(create_time) = '2024-01-01'
WHERE user_id = '123' -- user_id 是 int
解决
现象
ORDER BY + LIMIT原因
例子
WHERE user_id = 1
ORDER BY create_time DESC
需要:
INDEX(user_id, create_time)
现象
原因
解决
ANALYZE TABLE orders;
现象
可能原因
现象
原因
解决
ALTER INDEX idx_xxx REBUILD;
重点看:
type(range / ref / index)rowsExtra
Using index(好)Using where; Using index(还行)Using filesort(危险)索引扫描变慢,通常不是“索引没用”,而是“用错了方式”或“用得太重”。
如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一类问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。