2
を使用していません。それはdate_trunc_index
を使用している:問合せは、私はこのようなクエリを持つインデックス
CREATE INDEX date_trunc_index
ON foo
USING btree
(date_trunc('day'::text, my_date));
のは、このクエリは、他の機能/クエリ/ビュー内にあると私はinterval
私のクエリは次のようになります返す機能get_days()
経由の日数を制御したいと仮定しましょう:
質問2番目のクエリでもうdate_trunc_index
が使用されていないのはなぜですか?それを修正する方法は?
EDIT
EXPLAIN ANALYZE
用:
第一クエリ:
"Index Scan using date_trunc_index on foo f (cost=0.01..8.10 rows=1 width=8) (actual time=0.012..0.012 rows=0 loops=1)"
" Index Cond: (date_trunc('day'::text, (('now'::cstring)::date - '597 days'::interval)) > date_trunc('day'::text, my_date))"
"Total runtime: 0.049 ms"
第二のクエリ:
"Seq Scan on foo f (cost=0.00..4228786.45 rows=2993719 width=8) (actual time=56384.159..56384.159 rows=0 loops=1)"
" Filter: (date_trunc('day'::text, (('now'::cstring)::date - get_days())) > date_trunc('day'::text, my_date))"
" Rows Removed by Filter: 8980835"
"Total runtime: 56384.181 ms"
「EXPLAIN ANALYZE」とは何ですか? – icuken
@icukenが2 'explain analyze'の結果で更新されました – ilovkatie
' get_days() 'は" IMMUTABLE "または" STABLE "と宣言されていますか? –