Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql hstore中没有可预测键的索引_Sql_Postgresql_Indexing_Hstore - Fatal编程技术网

Sql 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

假设我有一个博客数据库,其中posts表在hstore中存储标签。
键表示标记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';