在MySQL中仅检索固定数量的行

San*_*man 18 mysql sql-limit

我在负载下测试我的数据库设计,我只需要检索固定数量的行(5000)

我可以指定LIMIT来实现这一点,但是看起来查询会构建匹配的所有行的结果集,然后只返回限制中指定的行数.它是如何实现的?

是否有一个MySQL读取一行,读取另一行,并在检索第5000个匹配行时基本停止?

Kei*_*all 27

MySQL很聪明,如果你LIMIT 5000在查询中指定了一个,并且可以在不先生成整个结果集的情况下生成该结果,那么它将不会构建整个结果.

例如,以下查询:

SELECT * FROM table ORDER BY column LIMIT 5000
Run Code Online (Sandbox Code Playgroud)

table除非有索引column,否则此查询将需要扫描整个查询,在这种情况下,它执行智能操作并使用索引查找具有最小值的行column.


Tej*_*eja 8

 SELECT * FROM `your_table` LIMIT 0, 5000 
Run Code Online (Sandbox Code Playgroud)

这将显示数据库的前5000个结果.

 SELECT * FROM `your_table` LIMIT 1001, 5000 
Run Code Online (Sandbox Code Playgroud)

这将显示从1001到5000的记录