假设我有一个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,而不存储integerPer documentation:
键和值只是文本字符串。

关于sql - hstore中的索引,没有可预测的 key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22183372/

10-13 05:00