私はjsonbをpostgresに格納しています。postgres jsonbカラムのGINインデックスはネストされていますか?
{
"name": "Mr. Json",
"dept":{
"team":{
"aliases":["a1","a2","a3"],
"team_name": "xyz"
},
"type":"engineering",
"lead":"Mr. L"
},
"hobbies": ["Badminton", "Chess"],
"is_active": true
}
てきたが、私はタイプ=「工学」とリード= '氏を含むすべての行のような完全一致のクエリを実行する必要があり、列
にGINインデックスを作成しました。 L 'である。 私は現在のような封じ込めのクエリを行っています:
data @> '{"dept":{"type":"engineering"}}' and data @> '{"dept":{"lead":"Mr. L"}}'
私はGINインデックスが使用されている示してクエリプランを見ましたが、私はこれが動作するかどうかわからない午前またはこれを達成するためのいくつかのより良い方法があるかどうか。
ネストされたキーで別のインデックスを作成する必要がありますか?
jsonb列をインデックスすると、ネストされたキーまたは最上位レベルのインデックスが作成されますか?
また、この情報を参考にしてください。 docsから
なぜ 'data @> '{" dept ":{" lead ":" Mr。L "、" type ":" engineering "}}'というのはなぜですか?クエリはインデックスを2回使用しますが、これは同等ですが1回のみ使用します。 – pozs