【问题标题】:postgresql jsonb case insensitive query with index带有索引的postgresql jsonb不区分大小写查询
【发布时间】:2021-03-20 01:39:50
【问题描述】:

我正在寻找一种方法来进行不区分大小写的查询,我在这里找到了它 (postgresql jsonb case insensitive query),更准确地说是这样的查询: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(...)函数会触发一次全扫描,代价太大。

提前谢谢你。

【问题讨论】:

    标签: sql postgresql query-optimization where-clause jsonb


    【解决方案1】:

    你需要索引完整的表达式:

    CREATE INDEX ON tab USING gin ((upper(data::text)::jsonb));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 2011-01-14
      • 1970-01-01
      • 2015-04-22
      相关资源
      最近更新 更多