在https://github.com/amatsuda/kaminari/issues/545有一个线程在讨论Ruby分页gem遇到大表时遇到的问题。
当记录数量很大时,分页将显示如下内容:
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [...] [end]的
当记录数量巨大时,这可能会导致性能损失,因为获得50M +记录的精确计数需要时间。但是,在这种情况下需要知道的是,计数大于the number of pages to show * number of records per page
。
是否有比获取完全 COUNT
更快的SQL操作,这只会断言COUNT
大于某个值 x ?
答案 0 :(得分:3)
您可以尝试使用
SQL Server:
SELECT COUNT(*) FROM (SELECT TOP 1000 * FROM MyTable) X
MySQL的:
SELECT COUNT(*) FROM (SELECT * FROM MyTable LIMIT 1000) X
运气不错,SQL Server / MySQL将优化此查询。显然,不是1000,而是应该放置所需的最大页数*每页的行数。