Search Postgresql Archives

question about hstore and indexes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi @all,

i have this table with some rows:

test=*# \d my_hstore;
                         Table "public.my_hstore"
 Column |  Type   |                       Modifiers
--------+---------+--------------------------------------------------------
 id     | integer | not null default
nextval('my_hstore_id_seq'::regclass)
 werte  | hstore  |
Indexes:
    "my_hstore_pkey" PRIMARY KEY, btree (id)
    "idx_hstore" gist (werte)


test=*# select * from my_hstore;
 id |              werte
----+----------------------------------
  1 | "key1"=>"val1", "key2"=>"val2"
  2 | "key1"=>"val11", "key2"=>"val22"
  3 | "key1"=>"val21"
  4 | "key3"=>"val3"
(4 rows)



i have set enable_seqscan to false.


This query can't use the index:

test=*# explain select * from my_hstore where werte->'key1' = 'val1';
                                  QUERY PLAN
------------------------------------------------------------------------------
 Seq Scan on my_hstore  (cost=10000000000.00..10000000001.06 rows=1 width=36)
   Filter: ((werte -> 'key1'::text) = 'val1'::text)
(2 rows)


I have to add this condition: werte ? 'key1'

test=*# explain select * from my_hstore where werte ? 'key1' and werte->'key1' = 'val1';
                                 QUERY PLAN
-----------------------------------------------------------------------------
 Index Scan using idx_hstore on my_hstore  (cost=0.13..8.15 rows=1 width=36)
   Index Cond: (werte ? 'key1'::text)
   Filter: ((werte -> 'key1'::text) = 'val1'::text)
(3 rows)


Why? I'm searching only for werte->'key1' with the condition = 'val1', why i have to add 
the redundant where-condition?

I'm using 9.3., havn't try it with 9.2 or other versions.

Andreas
-- 
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect.                              (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly."   (unknown)
Kaufbach, Saxony, Germany, Europe.              N 51.05082°, E 13.56889°


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux