当前位置: 首页 > 面试题库 >

如何优化大多数出现的值(亿万行)的检索

夏侯彬郁
2023-03-14
问题内容

我正在尝试从包含数亿行的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)创建一个新表,每个唯一的“值”和“ count”将在其中存储一行,在count列上放置一个降序索引
2)在原始表中添加一个触发器,在其中维护该新表(插图并更新)以增加/减少计数。
3)在此新表上运行查询,由于计数索引递减,该新表将快速运行



 类似资料:
  • 问题内容: 我有以下查询: 分析表有6000万行,而交易表有3M行。 在此查询上运行时,我得到: 我已经不知道如何优化此查询了,因为它已经非常基础了。运行此查询大约需要70秒钟。 以下是存在的索引: 根据建议,在添加任何额外索引之前简化了两个表的架构,因为这并不能改善情况。 如果以上无法进一步优化。关于汇总表的任何实施建议都将非常有用。我们正在AWS上使用LAMP堆栈。上面的查询正在RDS(m1.

  • 注意:我无法访问与此问题相关的源代码/数据库。这两个表位于不同的服务器上。 我在一家第三方公司工作,该公司的系统与我们自己的系统集成。他们有一个运行类似这样的查询; 它在

  • 本文向大家介绍上千万或上亿的数据,统计其出现次数最多的前N个数据?相关面试题,主要包含被问及上千万或上亿的数据,统计其出现次数最多的前N个数据?时的应答技巧和注意事项,需要的朋友参考一下 做法相同,先hash到小文件,然后hashmap计数比较

  • 本文向大家介绍如何进行大表优化?相关面试题,主要包含被问及如何进行大表优化?时的应答技巧和注意事项,需要的朋友参考一下 当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下: 1. 限定数据的范围 务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单历史的时候,我们可以控制在一个月的范围内; 2. 读/写分离 经典的数据库拆分方案,主库负责写,从库

  • 统计数据表中多个sum千万级数据超时。由于业务需要实时 所以做不来快照表 我加了索引似乎也不管用 后来为了不联表 我直接把快照写入进去了

  • 问题1[主]:是否可以优化? 我尝试过:避免使用非常大的数字的操作。所以我决定使用辅助数据。例如,我将转换为,其中。 问题:但是似乎比快十倍。这里是我的测试: