【发布时间】:2016-04-07 06:50:46
【问题描述】:
我在 SQLITE 中有一个高分表,它支持三个简单的操作:
- 添加新用户及其高分。
- 更新现有用户的高分。
- 获取排行榜(所有用户和分数按分数排序):
SELECT * FROM scores ORDER BY high_score DESC
一切正常,但我担心这会如何扩展:有 10,000 名用户排序高分大约需要 60 毫秒,这没关系,但这个时间大致呈线性上升,如果我有 100,000 名用户请求高分,则需要 ~ 600 毫秒太慢了。
是否有一种聪明的方法可以插入新用户/更新他们的分数,以避免每次检索排行榜时都必须进行完整的排序?例如。类似于 C++ priority_queue 或 python heapq。
我想我可以在每次插入时对整个数据库进行排序和替换(例如 Sort an entire SQLite table),但这似乎有点矫枉过正。
【问题讨论】:
-
您是否在 arm 驱动的移动设备上使用 sqlite?
-
@st. - 不,在英特尔 Macbook Pro 上进行测试。