我一直致力于优化一段时间,但我真的无法破解这个。
查询:
SELECT `field` FROM `table` WHERE `column_id` = 12341
指数:
ALTER TABLE `table`
ADD INDEX `column_id` (`column_id`);
现在查询 ( EXPLAIN SELECT field FROM table WHERE column_id = 12341
) 的解释显示我有 50.000 行。然而,实际上只有 20.000 行 column_id = 12341。
- 解释告诉我它正在使用 column_id 索引
- 但是,它显示我有 '50.000' 行
- 实际上它只有 20.000 行
- 我知道 EXPLAIN 行是一个估计值,但这是一个如此简单的索引..
- 这是一个 InnoDB
- 我试过优化表/分析表..
现在这可能很烦人,因为 MySQL 使用行数估计来选择正确的索引,它最终可能会选择错误的索引,仅仅是因为错误的估计。
有一些我不知道的索引技巧吗?