SQL COUNT - 大于某个数字而不必获得确切的计数?

时间:2015-03-31 18:05:25

标签: sql ruby-on-rails ruby

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

1 个答案:

答案 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,而是应该放置所需的最大页数*每页的行数。