当前位置: 首页 > 知识库问答 >
问题:

从Postgres DB中包含1000万条记录的表中获取记录的性能改进

华项明
2023-03-14

我有一个分析表,其中包含1000万记录,为了生产图表,我必须从分析表中获取记录。其他几个表也加入到这个表中,目前正在获取数据但它需要大约10分钟,即使我已经索引了加入的列,并且我在Postgres中使用了物化视图。但仍然性能很低,从物化视图执行选择查询需要5分钟。

请建议我一些技巧,以便在5秒内得到结果。我不想改变数据库存储结构,因为要支持它,需要做很多代码更改。我想知道是否有一些内置的方法可以提高查询速度。

提前感谢

共有1个答案

禹德水
2023-03-14

一般来说,您可以通过创建更好的数据结构来解决这个问题(大多数引擎通过键在一定程度上为您做到这一点)。

但是如果你要创建一个排序列。然后创建一个树状结构,这样你的搜索率就只有(N(log[N]),而不是你现在可能面对的。这将确保你在搜索中总是有一个巨大的速度。

这是关于二叉树、红黑树等。

加速的另一个实现可能是利用REDIS系列中的一些东西,即一个很好的数据库缓存层。

出于分析原因,过去我也选择使用与hadoop相关的技术。尽管在目前的情况下,这可能是一个更大的迁移。

 类似资料:
  • 我已经确保使用explain查询确实使用了我创建的索引,但性能仍然不够好。 我在想,现在是不是该去sharding了..但是我们很快就会开始每天有大约100万张新唱片在这个收藏中…所以我不确定它是否能很好地扩展.. 编辑:查询示例: 请注意,deviceType在我的集合中只有2个值。

  • 我有一个“Customer”表,它有将近120万条记录,其中一列是ntext类型的“customer_records ”,它包含xml数据。我需要在该列的所有现有记录中替换一个url值。我尝试了下面的替换查询,但是执行该查询需要大约20分钟的时间。 在更新期间,CPU 消耗被利用到最大,这引起了问题。在 120 万条记录中,实际更新的记录中有 60 万条记录,但查询需要读取每条记录以查找和替换 U

  • 问题内容: 假设有两个表: 表A 表B 表之间的联系是 messageID 字段。 我想要一个查询来生成这样的结果,在该查询中,我将所有字段从表A中拉出,并对表B中每条消息的注释数进行计数,如下所示: 我已经尝试过这样的事情: 但这是行不通的。有任何想法吗?似乎应该可以在一个查询中执行此操作。我正在使用MSSQL。谢谢你的帮助。 问题答案: 标量子查询将起作用: 与往常一样,有很多方法可以改变这只

  • 问题内容: 所以我有两个表,一个是RAWtable,另一个是MAINtable,如果存在多个记录(比较相同的名称,代码),我必须获取最新的groupID。例如,我在RAWtable上有这个: 这两个记录应视为一个,并且应仅返回此值: 该行是应插入主表中的唯一行。提供返回的最新GroupID(groupid是日期和时间的组合) 我已经尝试过了,但是没有用: 我怎样才能做到这一点?多谢。 问题答案:

  • 问题内容: 我有一个表 的学生 这样 我想获取所有记录,但不应重复邮政编码。因此,在上述表记录的情况下,应获取记录1和2。将不会提取第3条记录,因为它的邮政编码已在第1条记录中。 问题答案: 以下查询将仅选择不同的“ zip”字段。 以下查询将选择所有字段以及不同的zip字段。

  • 有一列我想检索并插入到另一个表中例如,下面是我想检索值的第一个表 我使用MSSQL2008