Hi,
I am trying to figure out how to debug a performance problem / use psql explain.
The table in question is:
# \d word_association;
Table "public.word_association"
Column | Type | Modifiers
--------+------------------------+--------------------
word1 | character varying(128) | not null
word2 | character varying(128) | not null
count | integer | not null default 0
Indexes:
"word1_word2_comb_unique" unique, btree (word1, word2)
"word1_hash_index" hash (word1)
"word2_hash_index" hash (word2)
"word_association_count_index" btree (count)
"word_association_index1_1" btree (word1)
"word_association_index2_1" btree (word2)
It has multiple indices since i wanted to see which one the planner choses.
# explain select * FROM word_association WHERE (word1 = 'bdss' OR
word2 = 'bdss') AND count >= 10;
QUERY PLAN
------------------------------------------------------------------------------------------------
Bitmap Heap Scan on word_association (cost=11.53..1192.09 rows=155 width=22)
Recheck Cond: (((word1)::text = 'bdss'::text) OR ((word2)::text =
'bdss'::text))
Filter: (count >= 10)
-> BitmapOr (cost=11.53..11.53 rows=364 width=0)
-> Bitmap Index Scan on word_association_index1_1
(cost=0.00..5.79 rows=190 width=0)
Index Cond: ((word1)::text = 'bdss'::text)
-> Bitmap Index Scan on word_association_index2_1
(cost=0.00..5.67 rows=174 width=0)
Index Cond: ((word2)::text = 'bdss'::text)
(8 rows)
The questions:
1. i can undestand where the cost=11.53 came from but where did the
1192.09 come form? The values are in milli right ?
2. the query takes in reality much longer than 1 second.
In short, it feels like something is very wrong here (i tried vacuum
analyze and it didn't do much diff).
any ideas ?