【发布时间】:2011-11-12 04:39:10
【问题描述】:
我正在尝试从包含数亿行的 SQLite 表中检索一些最常出现的值。
到目前为止的查询可能如下所示:
SELECT value, COUNT(value) AS count FROM table GROUP BY value ORDER BY count DESC LIMIT 10
value 字段上有一个索引。
但是,使用 ORDER BY 子句,查询需要很长时间,我从未见过它的结尾。
可以做些什么来大幅改进对如此大量数据的此类查询?
我尝试添加 HAVING 子句(例如:HAVING count > 100000)来减少要排序的行数,但没有成功。
请注意,我不太关心插入所需的时间(它仍然需要合理,但优先考虑选择),所以我愿意接受建议在插入时进行计算的解决方案.. .
提前致谢,
【问题讨论】:
-
Java 在哪里发挥作用?
-
以防万一解决方案包括后/预处理,这是我用来与数据库交互的语言。
-
您正在开发什么类型的应用程序?
标签: java sql sqlite optimization query-optimization