hstore中的索引没有可预测的键

时间:2014-03-04 21:24:33

标签: sql postgresql indexing hstore

假设我有一个博客数据库,其中posts表在hstore中存储标签 键表示标记ID,值表示标记名称。

ex:1=>'Test', 56=>'SQL', 42=>'Java'

我希望在带有代码过滤器的帖子上进行优化选择。 我应该如何以及在标签列上创建什么类型的选择以优化此查询

SELECT * FROM posts WHERE tags?'4'

问题是我没有可预测的密钥名称,以便根据其值创建索引。

在列上创建gist索引是否是一个很好的解决方案? 以及如何将密钥视为整数?

1 个答案:

答案 0 :(得分:1)

GIN索引可能是更好的选择:

CREATE INDEX posts_tags_idx ON posts USING gin (tags);

适用于所有键 如果查询仅针对具有partial index

的特定密钥,则可以进一步优化索引
CREATE INDEX posts_tags_idx ON posts USING gin (tags -> '4')) WHERE x ? '4';

hstore ? text ... does hstore contain key?

但这似乎不适合你。

hstore仅存储text,而不是integerPer documentation:

  

键和值只是文本字符串。