gpt4 book ai didi

mysql - 为什么查询优化器不使用表中定义的索引? (mysql)

转载 作者:行者123 更新时间:2023-11-29 12:39:57 24 4
gpt4 key购买 nike

我有以下架构

CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`d` date NOT NULL,
`y` year(4) NOT NULL,
PRIMARY KEY (`id`),
KEY `y` (`y`)
) ENGINE=MyISAM CHARSET=utf8;

当我运行“EXPLAIN SELECT * FROM test where y = '2010';”时

尽管表中为“y”列定义了索引,但查询优化器并未使用该索引。

可能是什么原因?

最佳答案

MySQL 必须发现它值得使用索引。

当 dbms 期望只找到几条记录时,通常会出现这种情况。即使低至所有记录的 10% 甚至 5% 也可能被视为太多,然后 dbms 决定更好地扫描整个表,而不是必须通过索引进行困惑。

所以答案是:MySQL 认为这里不适合使用索引。它认为全表扫描可能更快。

关于mysql - 为什么查询优化器不使用表中定义的索引? (mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26255741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com