如何在复杂的json结构上创建JSONB GIN索引

问题描述 投票:0回答:1
{
    "elements": {
        "array": [
            {
                "childElements": {
                    "array": [
                        {
                            "nameStId": "8818"
                        }
                      ]
                  }
            }
        ]
}           

我想要 nameStId 值上的 PostgresSQL GIN 索引 需要建议如何实现这一目标

那我也想查询

json postgresql indexing jsonb
1个回答
0
投票

要索引 JSONB 数据,必须使用 jsonb_path_ops 运算符类。 GIN索引可以如下创建:

CREATE INDEX idx_nameStId ON your_table_name USING GIN (your_jsonb_column -> 'elements' -> 'array' -> 0 -> 'childElements' -> 'array' -> 0 -> 'nameStId' jsonb_path_ops);

在 WHERE 子句中使用 GIN 索引,如下所示搜索 nameStId 等于 8818 的元素:

SELECT *
FROM your_table_name
WHERE your_jsonb_column @> '{"elements": {"array": [{"childElements": {"array": [{"nameStId": "8818"}]}}]}}';

此查询使用@>运算符进行JSONB包含查询,并且您建立的GIN索引应该会增强查询的性能。

希望它有效:)

© www.soinside.com 2019 - 2024. All rights reserved.