gpt4 book ai didi

mysql - 在Mysql中,为什么未使用的索引会影响查询计划?

转载 作者:可可西里 更新时间:2023-11-01 06:49:54 26 4
gpt4 key购买 nike

我已经看过好几次了,但我可能误解了 EXPLAIN 查询计划。

假设我有一个表(col1, col2)。我想将它与 col1 和 col2 上的另一个表连接起来。所以我创建了一个索引(col1,col2)。有时,EXPLAIN 显示索引未被使用。可能使用了其他一些低效索引或根本没有使用。

但是如果我创建另一个索引(col1),那么会使用第一个索引(col1, col2)。

有没有人遇到过这种情况?您知道为什么会发生这种情况吗?

我的理论是,未使用的索引提供了一些关于表的更准确的统计信息,提示查询计划使用第一个索引。但我对 mysql 的内部工作原理还不够熟悉,不知道这是否属实或如何证明。

最佳答案

ALTER TABLE 的 MySQL 文档 states可能需要对其运行 ANALYZE TABLE 以刷新索引基数,我认为这是您所看到的行为的一个因素。此外,查询优化器通常处理与填充表完全不同的空(或接近)空表,并且当只有几行时,它通常会进行全表扫描而不是使用索引。对于我自己在 $work 的开发,我不能依赖开发数据库的 EXPLAIN 输出。

关于mysql - 在Mysql中,为什么未使用的索引会影响查询计划?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743023/

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