假设我有一个blog数据库,posts表将标记存储在hstore中。
键表示标记id,值表示标记名。
示例:1=>'Test', 56=>'SQL', 42=>'Java'
我想有一个标签过滤器的职位优化选择。
为了优化这个查询,我应该在tags列上创建怎样和什么类型的select
SELECT * FROM posts WHERE tags?'4'
问题是我没有可预测的键名来根据它们的值创建索引。
在列上创建gist索引是一个好的解决方案吗?
我怎样才能把键当作一个整数呢?
最佳答案
杜松子酒指数可能是更好的选择:
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:键和值只是文本字符串。
关于sql - hstore中的索引,没有可预测的 key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22183372/