2013-08-26 35 views
0

我有兩個表,用戶和事務。在這兩個表中,行都有時間戳。你可以索引PostgreSQL中的表之間的時間戳差異嗎?

我在運行復雜查詢時遇到性能問題,其中交易日期正常化以反映他們發生用戶體驗的哪一點(即用戶加入後的多少天是交易處理)。

這種「歸日」度量的計算公式爲

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

有什麼辦法索引此,這樣我可以提高查詢速度?

回答

2

沒有辦法直接製作這樣的索引。

您可以向T表中添加另一個字段,它將存儲公式的值,並且可以在該字段上添加索引。您可以使用觸發器來維護該字段的值。

2

否:PostgreSQL不允許currently允許創建引用多個表的索引。

另外,您可以:使用觸發器來計算對插入時間戳差異

  • 按照maniek的建議/更新到兩個表。
  • 使用Postgresql 9.3的CREATE MATERIALIZED VIEW,它允許您定義視圖,該視圖將視圖結果集的快照存儲爲表格。請注意,在此快照之後對源表所做的任何更改都不會自動包括在內。在生成更新快照報告之前,您可以使用REFRESH MATERIALIZED VIEW來更新此視圖。