gpt4 book ai didi

mysql - 为什么 MySQL 对于同一查询会显示不同数量的 Rows_examined?

转载 作者:行者123 更新时间:2023-11-30 01:33:38 25 4
gpt4 key购买 nike

我有一个 MySQL 慢查询日志,显示相同的查询在几分钟内运行了两次。在此期间,表中没有添加任何内容,任何记录的关键字段也没有更改。为什么检查的行数会不同?

# Time: 130615 11:35:59
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 32.198606 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 68851
SET timestamp=1371314159;
SELECT * FROM `projectaddresses` WHERE `ID_PROJECT` = 77 ORDER BY `ID_PROJECTADDRESS` ASC LIMIT 25 OFFSET 0;
# Time: 130615 11:37:22
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 30.030193 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 163319
SET timestamp=1371314242;
SELECT * FROM `projectaddresses` WHERE `ID_PROJECT` = 77 ORDER BY `ID_PROJECTADDRESS` ASC LIMIT 25 OFFSET 0;

此查询通常会在一秒钟内返回。 ID_PROJECTADDRESS 是主键,ID_PROJECT 上有一个基数为 110 的索引。

我在 MySQL 论坛上发现的唯一内容表明索引统计信息已更新,但我认为这在这里没有意义。

我认为该查询通常运行得很快并且不会出现在慢速查询日志中这一事实与同一问题有关。任何有关该问题可能是什么的想法将不胜感激。

最佳答案

如果您的主键不是唯一的,那么 MySQL 只会读取行,直到有 25 个匹配行,然后停止。除非您的 ORDER BY 是唯一的,否则不能保证每次都会以相同的顺序读取行。以最方便的方式读取行,因此有时可能需要读取更多行才能找到匹配的 25 行。

关于mysql - 为什么 MySQL 对于同一查询会显示不同数量的 Rows_examined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173158/

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