【问题标题】:how can I run a group by query on a jsonb column with a gin index in postgresql?如何通过查询在 postgresql 中使用 gin 索引的 jsonb 列运行组?
【发布时间】:2020-10-22 08:57:52
【问题描述】:

我有一个表,其中包含一个名为 data 的列,格式为 jsonb。 我在此列上创建了一个杜松子酒索引。

我想让 postgres 在执行 group by 子句时使用 gin 索引。 此查询的正确语法是什么? 这是数据列中的示例条目

{"firstname": "Bob", "lastname": "Smith", "home_zip": "11234"}

我试过这个,但是当我运行这个查询时,postgres 不使用 gin 索引。

explain analyze select data#>'{home_zip}',count(*) from contacts group by data#>'{home_zip}'

【问题讨论】:

    标签: postgresql indexing group-by jsonb


    【解决方案1】:

    Gin 索引不支持 can_order,因此不能用于加速 group by(除非通过加速提供 GROUP BY 的 WHERE 子句)。

    您可以通过以下方式使用表达式索引来加速:

    create index on contacts btree ((data #> '{home_zip}'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-10
      • 2021-07-22
      • 2021-05-30
      • 1970-01-01
      • 2021-10-04
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多