我是一名有用的助手,可以为您翻译文本。
也许我错过了一些显而易见的东西?
我正在尝试使用postgresql 9.3的hstore。我尝试像文档中所述那样为hstore列使用索引 just like documentation states。我的问题是索引似乎没有被使用。让我给你举个例子:
我创建了一个名为“Person”的表:
=# CREATE TABLE Person (Id BIGSERIAL PRIMARY KEY NOT NULL, Values hstore);
并插入了一个测试值:
=# INSERT INTO Person (Values, 'a=>1,b=>3');
如果我解释一个在“Values”列上使用运算符“@>”的SELECT查询,那么毫不意外地会得到以下结果:
=# EXPLAIN SELECT P.* FROM Person AS P WHERE P.Values @> hstore('a', '1');
QUERY PLAN
----------------------------------------------------------
Seq Scan on person p (cost=0.00..24.50 rows=1 width=40)
Filter: ("values" @> '"a"=>"1"'::hstore)
没有索引 < - > 顺序扫描。有道理。无论我创建GIN或GIST索引,解释器都在谈论顺序扫描:
=# CREATE INDEX IX_GIN_VALUES ON Person USING GIN (values);
CREATE INDEX
=# EXPLAIN SELECT P.* FROM Person P WHERE P.values @> hstore('a', '1');
QUERY PLAN
----------------------------------------------------------
Seq Scan on person p (cost=0.00..1.01 rows=1 width=246)
Filter: ("values" @> '"age"=>"2"'::hstore)
也许我错过了一些显而易见的东西?