gpt4 book ai didi

java - 如何优化最常出现的值(数亿行)的检索

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:36:28 24 4
gpt4 key购买 nike

我正在尝试从包含数亿行的 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)以减少要排序的行数,但没有成功。

请注意,我不太关心插入所需的时间(它仍然需要合理,但优先考虑选择),所以我对建议在插入时进行计算的解决方案持开放态度.. .

提前致谢

最佳答案

1) 创建一个新表,您将为每个唯一“值”和“计数”存储一行,在计数列上放置一个降序索引
2) 向原始表添加触发器,在其中根据需要维护此新表(插入和更新)以增加/减少计数。
3) 从这个新表运行你的查询,由于计数索引的下降,它将运行得很快

关于java - 如何优化最常出现的值(数亿行)的检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7334969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com