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?
您可以尝试
SQL Server:
SELECT COUNT(*) FROM (SELECT TOP 1000 * FROM MyTable) X
MySQL:
SELECT COUNT(*) FROM (SELECT * FROM MyTable LIMIT 1000) X
如果运气好的话,SQL Server/MMySQL会优化这个查询。很明显,您应该输入所需的最大页数*每页的行数,而不是1000。