今日と日付列(から)の差(日数)を取得my_view
する計算列(days_since_my_date
)を持つビュー()があります:my_date
my_table
CREATE VIEW my_view AS
SELECT 'now'::text::date - my_date AS days_since_my_date,
...
FROM my_table;
ビューの計算列(days_since_my_date
)で日付よりも大きい/小さいクエリを最適化するために必要なインデックス(存在する場合)は何ですか?のmy_date
列に適用する必要があると思いますmy_table
。クエリは、次のようにかなり単純になります。
SELECT *
FROM my_view
WHERE days_since_my_date >= 10;
my_date
以下のようなに対して作成された標準インデックスは、上記のクエリ中にヒットしません。
CREATE INDEX my_date_idx on my_table(my_date);
どんな助けでも大歓迎です。
非決定論的関数に依存しているため、式にインデックスを付けることはできません。
構築された列を比較する代わりに、インデックス付きの列を定数と比較する必要があります(実行時)。
SELECT *
FROM my_view
WHERE my_date <= NOW() - '10 days'::INTERVAL
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加