【问题标题】:Can you index on timestamp difference between tables in PostgreSQL?您可以索引 PostgreSQL 中表之间的时间戳差异吗?
【发布时间】:2013-08-26 21:27:30
【问题描述】:

我有两个表,用户和事务。在这两个表中,行都有时间戳。

我在运行复杂查询时遇到了性能问题,其中交易日期被规范化以反映他们发生在用户体验的哪个时间点(即在用户加入后多少天处理了交易)。

这个“标准化日”度量计算为

ceil(extract(days from T.tdate - U.created_at)) +1

有没有什么办法可以索引这个,这样我可以提高查询的速度?

【问题讨论】:

    标签: sql postgresql indexing


    【解决方案1】:

    没有办法直接制作这样的索引。

    您可以向 T 表添加另一个字段,该字段将存储公式的值,并且您可以在该字段上添加索引。您可以使用触发器维护该字段的值。

    【讨论】:

      【解决方案2】:

      否:PostgreSQL 不允许 currently 创建引用多个表的索引。

      您也可以:

      • 按照 maniek 的建议,使用触发器计算插入/更新两个表的时间戳差异。
      • 使用 Postgresql 9.3 的CREATE MATERIALIZED VIEW,它允许您定义视图,该视图获取视图结果集的快照并将其存储为表。请注意,在此快照之后对源表所做的任何更改都不会自动包含在内。您可以使用REFRESH MATERIALIZED VIEW 来更新此视图,就在为更新的快照生成报告之前。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-18
        • 2012-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-23
        • 1970-01-01
        相关资源
        最近更新 更多