BUG #16251: ::text type casting of a constant breaks query performance
От | PG Bug reporting form |
---|---|
Тема | BUG #16251: ::text type casting of a constant breaks query performance |
Дата | |
Msg-id | 16251-51e254d9a8bacbb2@postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #16251: ::text type casting of a constant breaks query performance
|
Список | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 16251 Logged by: Dima Pavlov Email address: imyfess@gmail.com PostgreSQL version: 12.1 Operating system: Windows 10 Description: Test table and indexes (PostgreSQL 12.1): CREATE TABLE t (dt timestamp with time zone); CREATE INDEX ind ON t USING btree (dt); INSERT INTO t(dt) SELECT ( timestamp '2020-01-01 00:00:00' + random() * ( timestamp '2020-02-29 00:00:00' - timestamp '2020-01-01 00:00:00' ) ) FROM generate_series(1, 10000) ------------------------------------- In the first query, everything is ok, appropriate index "ind" is used: explain (analyze, buffers) SELECT * FROM t WHERE ('2020-02-08')::date IS NULL OR dt > '2020-02-08' ORDER BY dt LIMIT 1 "Limit (cost=0.29..0.37 rows=1 width=8) (actual time=0.186..0.188 rows=1 loops=1)" " Buffers: shared hit=3" " -> Index Only Scan using ind on t (cost=0.29..303.75 rows=3627 width=8) (actual time=0.184..0.184 rows=1 loops=1)" " Index Cond: (dt > '2020-02-08 00:00:00+05'::timestamp with time zone)" " Heap Fetches: 1" " Buffers: shared hit=3" "Planning Time: 2.365 ms" "Execution Time: 0.239 ms" ----------------------------------------------- With '::text' type casting of '2020-02-08' (which is already text) query permofance is very low explain (analyze, buffers) SELECT * FROM t WHERE ('2020-02-08'::text)::date IS NULL OR dt > '2020-02-08' ORDER BY dt LIMIT 1 "Limit (cost=0.29..0.44 rows=1 width=8) (actual time=45.306..45.307 rows=1 loops=1)" " Buffers: shared hit=6232" " -> Index Only Scan using ind on t (cost=0.29..561.28 rows=3658 width=8) (actual time=45.304..45.304 rows=1 loops=1)" " Filter: ((('2020-02-08'::cstring)::date IS NULL) OR (dt > '2020-02-08 00:00:00+05'::timestamp with time zone))" " Rows Removed by Filter: 6367" " Heap Fetches: 6368" " Buffers: shared hit=6232" "Planning Time: 0.348 ms" "Execution Time: 45.343 ms"
В списке pgsql-bugs по дате отправления: