代码之家  ›  专栏  ›  技术社区  ›  Chris Henry

在MySQL中,解释查询的过滤列是什么意思?

  •  4
  • Chris Henry  · 技术社区  · 16 年前
    mysql> EXPLAIN EXTENDED SELECT * FROM table WHERE column = 1 LIMIT 10;
    +----+-------------+----------+------+---------------+--------------+---------+-------+--------+----------+-------+
    | id | select_type | table    | type | possible_keys | key          | key_len | ref   | rows   | filtered | Extra |
    +----+-------------+----------+------+---------------+--------------+---------+-------+--------+----------+-------+
    |  1 | SIMPLE      | table    | ref  | column        | column       | 1       | const | 341878 |   100.00 |       |
    +----+-------------+----------+------+---------------+--------------+---------+-------+--------+----------+-------+
    1 row in set, 1 warning (0.00 sec)
    

    过滤列的含义是什么?数字是高还是低?是的,我读过文件,但我不太明白数字表示什么,或者什么值被认为是可取的。

    1 回复  |  直到 16 年前
        1
  •  5
  •   the_void    16 年前

    这个 filtered 列是估计的百分比,指定将与上一个表联接的行数。你的情况是 100% ,即所有行。

    rows ,您大概知道,是对查询检查的行数的估计,所以 rows x filtered / 100

    有关其他信息,请参阅 What's New in MySQL Optimizer - What's new in MySQL Query Optimizer (幻灯片10)。

    编辑:

    书中有附录 High performance MySQL (2nd edition) 这本书表明 优化器当前使用此估计( )只为 ALL , index , range index_merge 访问方法 .