相关疑难解决方法(0)

JSON上的PostgreSQL索引

使用Postgres 9.4,我想在json列上创建一个索引,该索引将在搜索列中的特定键时使用.

例如,我有一个带有json列'animals'的'farm'表.

animals列具有一般格式的json对象:

'{"cow": 2, "chicken": 11, "horse": 3}'
Run Code Online (Sandbox Code Playgroud)

我已经尝试了许多索引(单独):

(1) create INDEX animal_index ON farm ((animal ->> 'cow'));
(2) create INDEX animal_index ON farm using gin ((animal ->> 'cow'));
(3) create INDEX animal_index ON farm using gist ((animal ->> 'cow'));
Run Code Online (Sandbox Code Playgroud)

我想运行如下查询:

SELECT * FROM farm WHERE (animal ->> 'cow') > 3;
Run Code Online (Sandbox Code Playgroud)

并让该查询使用索引.

当我运行此查询时:

SELECT * FROM farm WHERE (animal ->> 'cow') is null;
Run Code Online (Sandbox Code Playgroud)

然后(1)索引起作用,但我不能让任何索引适用于不等式.

这样的指数可能吗?

农场表只包含约5000个农场,但其中一些包含100个动物,查询对我的用例来说只需要太长时间.像这样的索引是我能想到的加速查询的唯一方法,但也许还有另一种选择.

postgresql json

34
推荐指数
1
解决办法
3万
查看次数

在PostgreSQL中不使用NULL仍然在标题中使用NULL位图?

显然,PostgreSQL在每个数据库行标题中存储了几个值.

如果我不在该表中使用NULL值 - 是否仍然存在空位图?
定义列有NOT NULL没有区别?

postgresql null storage database-design

13
推荐指数
1
解决办法
3827
查看次数

标签 统计

postgresql ×2

database-design ×1

json ×1

null ×1

storage ×1