我正在尝试使用postgres jsonb
列类型,到目前为止到目前为止还不错。
我正在使用的一个常见查询是这样的:
select count(*) from jsonbtest WHERE attributes @> '{"City":"Mesa"}';
我该如何扭转呢?是否有其他运算符或只是用作
select count(*) from jsonbtest WHERE NOT attributes @> '{"City":"Mesa"}';
最佳答案
两种方式,您可以测试任何json(b)值
->>
运算符将值提取为文本。但是这个操作很慢,如果只使用值测试@>
运算符测试任何json(b)包含任何json(b)。这是一种快速的方法,但是您没有经过NOT选项的测试。 简单快捷的方法:
NOT (attribute @> '{"City":"Mesa"}'::jsonb)
我已经将
attribute->>'City' <> 'Mesa'
更改为NOT (attribute @> '{"City":"Mesa"}'::jsonb)
,我的〜2.000.000行查询结果时间从45sec更改为25sec。