MySQL解释行限制

时间:2013-10-12 13:19:47

标签: mysql database-performance

以下是我用genre_id 1获取20行的查询。

EXPLAIN SELECT * FROM (`content`) 
WHERE `genre_id` = '1' 
AND `category` = 1
LIMIT 20

我在genre_id 1的内容表中总共有654行,我在genre_id上​​有索引,在上面的查询中我限制结果只显示20条工作正常的记录,但解释是在行下显示654条记录,我试图添加类别索引,但仍然是相同的结果,然后我删除了AND category = 1但相同的行数:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  content ref genre_id    genre_id    4   const   654 Using where

HERE我找到了答案

  

估算行数时不考虑LIMIT偶数   如果你有LIMIT限制将检查多少行MySQL   仍然会打印完整的数字

但也在评论中发布了另一条回复:

  

现在在估算行数时会考虑LIMIT。我   不知道哪个版本解决了这个问题,但在5.1.30,EXPLAIN中   准确考虑LIMIT。

我正在使用带有InnoDB的MySQL 5.5.16。因此,根据上述评论,它仍然没有考虑到。所以我的问题是mysql是否通过所有654行返回20行,即使我已设置限制?感谢

1 个答案:

答案 0 :(得分:0)

来自Rick JamesMySQL的回复

  

在估算Explain中的行数时是否考虑了mysql LIMIT?

     

没有。 (带JSON的5.7可能是另一回事。)