繁体   English   中英

您可以索引PostgreSQL中表之间的时间戳差异吗?

[英]Can you index on timestamp difference between tables in PostgreSQL?

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

在运行复杂的查询时,我会遇到性能问题,在这些查询中,交易日期已被规范化,以反映它们发生在用户体验的哪一点(即,用户加入后多少天进行了交易)。

此“标准化日”量度计算为

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

有什么方法可以对此建立索引,从而可以提高查询速度?

没有办法直接建立这样的索引。

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

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

或者,您可以:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM