mysql explain rows理解

MysqL性能调试中,常常使用EXPLAIN解释MysqL执行计划,从而用来估算性能耗时。其中,rows用来表示在sql执行过程中会被扫描的行数,该数值越大,意味着需要扫描的行数,相应的耗时更长。但是需要注意的是EXPLAIN中输出的rows只是一个估算值,不能完全对其百分之百相信,如EXPLAIN中对LIMITS的支持就比较有限。可以参考文章MysqL EXPLAIN limits and errors》

 

另外这个rows在官网的文档中也有解释:
http://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_rows

The rows column indicates the number of rows MysqL believes it must examine to execute the query.

这个rows就是MysqL认为必须要逐行去检查和判断的记录的条数。 
举个例子来说,假如有一个语句 select * from t where column_a = 1 and column_b = 2;
全表假设有100条记录,column_a字段有索引(非联合索引),column_b没有索引。
column_a = 1 的记录有20条, column_a = 1 and column_b = 2 的记录有5条。

那么最终查询结果应该显示5条记录。 explain结果中的rows应该是20. 因为这20条记录MysqL引擎必须逐行检查是否满足where条件。

 

相关文章

MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导...
在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问...
在数据库事务管理中,Undo Log 和 Redo Log 是两种关键日志,...
case when概述 sql语句中的case语句与高级语言中的switch语句...
其实很简单,只是为了忘记,做个记录,用的时候方便。 不管是...
1.进入服务,找到mysql服务,在属性里找到mysql的安装路径 2...