Sql hstore中没有可预测键的索引
假设我有一个博客数据库,其中posts表在hstore中存储标签。Sql hstore中没有可预测键的索引,sql,postgresql,indexing,hstore,Sql,Postgresql,Indexing,Hstore,假设我有一个博客数据库,其中posts表在hstore中存储标签。 键表示标记ID,值表示标记名称 例如:1=>'Test',56=>'SQL',42=>'Java' 我想有一个标签过滤器优化后选择。 为了优化此查询,我应该如何以及在标记列上创建什么类型的select SELECT * FROM posts WHERE tags?'4' 问题是,我没有可预测的键名来根据它们的值创建索引 在列上创建要点索引是一个好的解决方案吗? 我如何才能将键视为整数?GIN索引可能是更好的选择: CREATE
键表示标记ID,值表示标记名称 例如:
1=>'Test',56=>'SQL',42=>'Java'
我想有一个标签过滤器优化后选择。
为了优化此查询,我应该如何以及在标记列上创建什么类型的select
SELECT * FROM posts WHERE tags?'4'
问题是,我没有可预测的键名来根据它们的值创建索引
在列上创建要点索引是一个好的解决方案吗?我如何才能将键视为整数?GIN索引可能是更好的选择:
CREATE INDEX posts_tags_idx ON posts USING gin (tags);
这适用于所有键。如果查询仅针对具有以下内容的特定键,则可以进一步优化索引: 但这似乎不是你的选择
hs存储
仅存储文本
,不存储整数
键和值只是文本字符串
CREATE INDEX posts_tags_idx ON posts USING gin (tags -> '4')) WHERE x ? '4';