0

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

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

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

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

有什么方法可以索引这个以便我可以提高查询速度?

4

2 回答 2

2

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

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

于 2013-08-26T21:36:41.770 回答
2

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

或者,您可以:

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