我正在重新实现一个应用程序以支持全国工程竞赛,将其从本地服务器移至云端。
为了告诉团队他们此刻的位置,查询的形式为
select 1 + count(*) from team where where score < ?
团队得分动态变化。可能有多达 200 万个团队,我需要每秒处理至少 10 个这样的查询。
原始版本通过使用单独的 Berkeley 团队/分数记录数据库获得了所需的性能(实际上它已经用 1999 年的硬件实现了)。 Berkeley DB 中有一个“记录号”功能,它提供了完全正确的功能,而且速度非常快。
Heroku 显然无法支持 Berkeley DB。 PostgreSQL,他们的标准数据库,通过全表或索引扫描来执行 select count(*)
,这太慢了。
关于如何进行的任何想法?我不喜欢 Heroku,但必须转向某种云解决方案。
最佳答案
关于sql - 在 Web 应用程序中提供快速 `select count(*)` 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769823/