Hello Postgresql users,
In my setting, I found that sometimes the query does not use the gin index
built for a tsv column.
Attached file provide more info (with explain analyze).
Thanks and regards,
Patrick
jobs=> explain analyze SELECT company,industry FROM jobs WHERE tsv @@
to_tsquery('english', 'travel');
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
Append (cost=0.00..35337.69 rows=61625 width=67) (actual
time=0.122..59909.736 rows=61114 loops=1)
-> Seq Scan on jobs (cost=0.00..0.00 rows=1 width=64) (actual
time=0.001..0.001 rows=0 loops=1)
Filter: (tsv @@ '''travel'''::tsquery)
-> Seq Scan on jobs_2014p (cost=0.00..25629.21 rows=46735 width=64)
(actual time=0.121..47191.053 rows=46142 loops=1)
Filter: (tsv @@ '''travel'''::tsquery)
Rows Removed by Filter: 243194
-> Seq Scan on jobs_2013p (cost=0.00..9708.48 rows=14889 width=75) (actual
time=5.325..12708.878 rows=14972 loops=1)
Filter: (tsv @@ '''travel'''::tsquery)
Rows Removed by Filter: 86893
Total runtime: 59917.092 ms
(10 rows)
jobs=> set random_page_cost = 2;
SET
jobs=> explain analyze SELECT company,industry FROM jobs WHERE tsv @@
to_tsquery('english', 'travel');
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------
Append (cost=0.00..34676.86 rows=61625 width=67) (actual
time=280.185..2151.618 rows=61117 loops=1)
-> Seq Scan on jobs (cost=0.00..0.00 rows=1 width=64) (actual
time=0.001..0.001 rows=0 loops=1)
Filter: (tsv @@ '''travel'''::tsquery)
-> Bitmap Heap Scan on jobs_2014p (cost=2352.20..24968.38 rows=46735
width=64) (actual time=280.184..1784.566 rows=46143 loops=1)
Recheck Cond: (tsv @@ '''travel'''::tsquery)
-> Bitmap Index Scan on jobs_2014p_tsv_gin_idx (cost=0.00..2340.51
rows=46735 width=0) (actual time=277.210..277.210 rows=46143 loops=1)
Index Cond: (tsv @@ '''travel'''::tsquery)
-> Seq Scan on jobs_2013p (cost=0.00..9708.48 rows=14889 width=75) (actual
time=0.069..361.839 rows=14974 loops=1)
Filter: (tsv @@ '''travel'''::tsquery)
Rows Removed by Filter: 86908
Total runtime: 2154.907 ms
(11 rows)
jobs=> set random_page_cost = 4;
SET
jobs=> explain analyze SELECT company,industry FROM jobs WHERE tsv @@
to_tsquery('english', 'travel');
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------
Append (cost=0.00..35337.69 rows=61625 width=67) (actual time=0.229..3462.236
rows=61117 loops=1)
-> Seq Scan on jobs (cost=0.00..0.00 rows=1 width=64) (actual
time=0.001..0.001 rows=0 loops=1)
Filter: (tsv @@ '''travel'''::tsquery)
-> Seq Scan on jobs_2014p (cost=0.00..25629.21 rows=46735 width=64)
(actual time=0.228..2898.271 rows=46143 loops=1)
Filter: (tsv @@ '''travel'''::tsquery)
Rows Removed by Filter: 243213
-> Seq Scan on jobs_2013p (cost=0.00..9708.48 rows=14889 width=75) (actual
time=44.810..556.103 rows=14974 loops=1)
Filter: (tsv @@ '''travel'''::tsquery)
Rows Removed by Filter: 86912
Total runtime: 3468.134 ms
(10 rows)
--
Sent via pgsql-general mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general