gpt4 book ai didi

mysql - 为什么这个子查询要进行表扫描?

转载 作者:行者123 更新时间:2023-11-29 07:27:31 24 4
gpt4 key购买 nike

我有以下两个查询,它们本质上是相同的,因为 ID 列表(主键)是其中一个查询的结果 --

enter image description here

它正在对该查询进行全表扫描,而它似乎应该只通过子查询中的 PK 进行搜索,然后在外部查询中(再次)搜索 PK,这似乎很疯狂。

为什么mysql的执行计划会这样做呢?除了预取 ids 之外,还有什么方法可以解决这个问题——也就是说,两个查询而不是一个?

最佳答案

表扫描可能是最快的查找方法,特别是如果整个表都缓存在 RAM 中(通常是这种情况)。

当表位于内存中,而索引不在内存中或索引不完整时,进行扫描比从硬盘驱动器加载索引更便宜。

尝试更新表格上的统计数据,看看是否得到相同的结果。

ANALYZE TABLE table_name;

您可能还应该发布 mysql 版本和表结构等内容,以便进一步提供帮助。

关于mysql - 为什么这个子查询要进行表扫描?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34028641/

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