首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么对于同一查询,MySQL会显示不同数量的Rows_examined?

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

Stack Overflow用户
提问于 2013-06-18 23:40:46
回答 1查看 294关注 0票数 0

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

代码语言:javascript
复制
# 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论坛上发现的唯一一件事是指数统计数据被更新了,但我认为这在这里没有意义。

我假设这个查询通常运行得很快,并且不会出现在慢查询日志中,这与相同的问题有关。任何关于这个问题的想法都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-06-19 01:11:02

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17173158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档