postgresql jsonb 带索引的不区分大小写的查询
postgresql jsonb case insensitive query with index
我正在寻找一种进行不区分大小写查询的方法,我在这里找到了它 (),更准确地说是这样的查询:select ... where upper(data::text)::jsonb @> upper('[{"city":"New York"}]')::jsonb
但是,我似乎找不到足够的信息来了解如何创建索引以供此类查询使用。
where data::text @> '[{"city":"New York"}]'
与 GIN 索引完美配合
CREATE INDEX i1 ON mytable USING gin(data);
但是 upper(...) 函数会触发全面扫描,代价太大。
提前致谢。
您需要索引完整的表达式:
CREATE INDEX ON tab USING gin ((upper(data::text)::jsonb));
我正在寻找一种进行不区分大小写查询的方法,我在这里找到了它 (select ... where upper(data::text)::jsonb @> upper('[{"city":"New York"}]')::jsonb
但是,我似乎找不到足够的信息来了解如何创建索引以供此类查询使用。
where data::text @> '[{"city":"New York"}]'
与 GIN 索引完美配合
CREATE INDEX i1 ON mytable USING gin(data);
但是 upper(...) 函数会触发全面扫描,代价太大。
提前致谢。
您需要索引完整的表达式:
CREATE INDEX ON tab USING gin ((upper(data::text)::jsonb));