簡體   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