首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解释行总是返回表中的所有行

解释行总是返回表中的所有行
EN

Stack Overflow用户
提问于 2013-08-18 22:10:16
回答 2查看 1K关注 0票数 0

我试图理解下面的查询的解释结果。我得到了rows=7 (表的总大小),但是实际的查询只返回1行。解释结果上的rows=7是否意味着MySQL检查了每一行仍然得到这个结果?

代码语言:javascript
运行
复制
 EXPLAIN SELECT conversation_id FROM messages 
    WHERE to_id = '355' AND timestamp < '1376856934' LIMIT 1;

只有4行必须是_id=‘355’,列to_id和时间戳都被索引在一起,所以我不明白为什么要扫描整个表才能得到1行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-18 22:51:45

EXPLAIN输出中的" rows“列是对需要检查的行数的估计。

查询是否实际需要检查表中的每一行实际上取决于访问计划(在EXPLAIN输出中的其他列中显示)。例如,索引范围扫描操作不必查看每一行,只查看特定索引范围中的行。但是,一个完整的扫描操作将检查表中的每一行。

您的问题不能根据“行”列中返回的值来回答;我们确实需要查看EXPLAIN的输出,以确定MySQL是否使用索引范围扫描。

http://dev.mysql.com/doc/refman/5.5/en/explain-output.html

票数 1
EN

Stack Overflow用户

发布于 2013-08-18 22:34:14

来自MySQL文档:

限制子句可用于限制SELECT语句返回的行数。

EXPLAIN描述如何收集结果,LIMIT仅限制从以前收集的结果返回哪些行。

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

https://stackoverflow.com/questions/18304136

复制
相关文章

相似问题

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