我在负载下测试我的数据库设计,我只需要检索固定数量的行(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.
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的记录
| 归档时间: |
|
| 查看次数: |
54643 次 |
| 最近记录: |