我一直在寻找这个,他们都说了某种百分比,解释一下:
EXPLAIN EXTENDED SELECT * FROM PageAccess ORDER BY AccessId DESC LIMIT 20;
SELECT COUNT(*) FROM PageAccess;
Run Code Online (Sandbox Code Playgroud)
赠送:
id, select_type, table, type, possible_keys, key, key_len, ref, rows, filtered, Extra
1, 'SIMPLE', 'PageAccess', 'index', '', 'PRIMARY', '4', '', 20, 9295.00, ''
Run Code Online (Sandbox Code Playgroud)
(是的,过滤= 9295.00)
和:
1830
Run Code Online (Sandbox Code Playgroud)
对于计数(*)
是的我想要最后20行,AccessId是自动递增的主键.
9295是什么意思!?
Abh*_*rty 18
来源http://dev.mysql.com/doc/refman/5.5/en/explain-output.html#explain_filtered
筛选列指示将按表条件筛选的表行的估计百分比.也就是说,行显示了已检查的估计行数,而行×已过滤/ 100显示了将与之前的表连接的行数.如果您使用EXPLAIN EXTENDED,则会显示此列.
在过滤的100%中表示此表中的所有行都已过滤.因此,获得更高的价值并不令人担忧,因为它是一个好兆头,意味着它不必从表中读取尽可能多的数据.
这是它的计算方法.假设我有一个名为usersLets 的表,对它运行一些分析.
mysql> select count(*) from users ;
+----------+
| count(*) |
+----------+
| 79309 |
+----------+
Run Code Online (Sandbox Code Playgroud)
您可以看到表中有79309行.现在让我们来解释吧
mysql> explain extended select * from users order by idusers desc limit 20 ;
+----+-------------+-------+-------+---------------+---------+---------+------+------+-----------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-----------+-------+
| 1 | SIMPLE | users | index | NULL | PRIMARY | 4 | NULL | 20 | 396545.00 | |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-----------+-------+
Run Code Online (Sandbox Code Playgroud)
现在想知道为什么 filtered = 396545.00
那么计算很简单.
该表的总行数= 79309表示其tx.
解释显示rows = 20表示其tx1.
过滤计算为
(tx / tx1)*100 = 396545.00
Run Code Online (Sandbox Code Playgroud)
所以如果这个值很高意味着查询是好的,而不是从表中读取所有内容.
因此,不要混淆这不是查询将看起来的行数,而是相对于获取的行数可用行数的%的相对计算.
如果它变为100,则表示查询正在查找表中的所有可用行.
| 归档时间: |
|
| 查看次数: |
11085 次 |
| 最近记录: |