【发布时间】:2017-02-14 16:52:02
【问题描述】:
我正在寻找可以减少在我的数据仓库中运行选择语句的时间的方法。
我们目前正在运行 Postgres Enterprise 9.3.4.10,并打算在新的几个月内升级到 9.6。
有一个包含大约 9500 万行的 Fact 表,所有外键/id 列上都有 b-tree 索引。外键列是 smallint / integer 数据类型的混合。它们都是单列索引。还有一些度量,例如我们用于聚合的美元金额(sum / avg)。这些字段未编入索引。该表每天通过 Pentaho 使用 JDBC 插入/更新语句进行更新。该表还按activity_date_key 进行分区。
运行“从日期在 20160701 和 20160801 之间的表中选择总和(金额)”运行时间为 0.2 秒,但如果我将该时间范围增加到 20160101 和 20160801 之间,则运行时间会增加到 70 秒。 (日期字段是整数类型)。
我正在寻找一些关于我可以做些什么来减少这个时间的想法。可能有不同类型的索引?我读到 9.6 带有 BRIN 索引(块范围索引),但不确定这是否对我有帮助。是否有任何我可以安全调整的数据库配置参数?也许我的问题一般来说数据太多了?欢迎任何提示。如果您需要有关我的环境的更多信息,请告诉我。谢谢。
瑞恩
【问题讨论】:
-
编辑您的问题,并包含来自the postgresql-performance tag 的信息。
-
不相关,但是:
BRIN索引在 9.5 中引入,而不是在 9.6 中 -
如果"table"."date"上没有索引,应该有。
-
我将使用所有附加信息编辑我的原始帖子。谢谢大家的回复。
标签: database postgresql select postgresql-performance