3

我一直致力于优化一段时间,但我真的无法破解这个。

查询:

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 使用行数估计来选择正确的索引,它最终可能会选择错误的索引,仅仅是因为错误的估计。

有一些我不知道的索引技巧吗?

4

1 回答 1

0

比较并不是真正count有效explain的,因为(如已链接的答案中所述)explain显示已处理的行数,而不是结果集中预期的数量。

于 2013-07-03T23:37:08.677 回答