dat*_*.io 6 mysql database performance
有一个巨大的mysql表,有300,000条记录,并希望以这种方式用PHP查询PHP中的记录(尽管这里不是重点):
SELECT * FROM `table` LIMIT 250000, 100
Run Code Online (Sandbox Code Playgroud)
在记录的后半部分可能会非常缓慢,特别是在接近表格末尾时(LIMIT开始非常大).我的猜测是MySQL在将结果舀到我之前必须一直计算到250000?
那么如何解决这种或任何其他分页方法可能会更快?谢谢!
确保您使用索引,否则它将进行全表扫描。您可以查看执行计划来验证这一点,或者使用子句ORDER BY(在索引列上)强制解决该问题。这里有更多信息。
您的表并没有那么大,只有 300k 行。然而,接近表末尾时存在性能问题。唯一真正的解决方案是伪造限制条款。有一个自动递增字段,将行编号从 1 到 300,000,然后执行以下操作:
SELECT *
FROM mytable
WHERE field BETWEEN 250000 and 250100
Run Code Online (Sandbox Code Playgroud)
或类似的。如果您经常删除行,这可能会出现问题或不可能,但我倾向于发现较旧的数据往往变化较少,因此您可以通过使用LIMIT前 100,000 行和除此之外的代理分页列来对其进行一定程度的优化。
| 归档时间: |
|
| 查看次数: |
4848 次 |
| 最近记录: |