假设我有一个博客数据库,其中posts表在hstore中存储标签 键表示标记ID,值表示标记名称。
ex:1=>'Test', 56=>'SQL', 42=>'Java'
我希望在带有代码过滤器的帖子上进行优化选择。 我应该如何以及在标签列上创建什么类型的选择以优化此查询
SELECT * FROM posts WHERE tags?'4'
问题是我没有可预测的密钥名称,以便根据其值创建索引。
在列上创建gist索引是否是一个很好的解决方案? 以及如何将密钥视为整数?
答案 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
,而不是integer
。 Per documentation:
键和值只是文本字符串。