我在PostgreSql世界中相当新手。 我将以下JSON对象存储在PostgreSQL的jsonb列中,每行作为一个对象。
{"cid":"CID1","Display":"User One CID1","F-Name":"Craig","LName":"One"}
{"cid":"CID1","Display":"User One CID1","F-Name":"Leo","LName":"One"}
{"cid":"CID2","OrderNo":"Ordr One Ord1","O-Name":"Michael","LName":"One"}
{"cid":"CID2","OrderNo":"Ordr One Ord1","O-Name":"Sam","LName":"One"}
{"cid":"CID3","InvocNo":"Invc One Inv1","I-Name":"Ron","LName":"One"}
{"cid":"CID3","InvocNo":"Invc One Inv1","I-Name":"Books","LName":"One"}
因此,这些N个对象在jsonb列中存储为N行(命名为res )。我有一个要求是查询这些JSON对象的文本匹配,包含类型查询,键('显示','OrderNo','InvocNo',F-Name,O-Name等)。 生成的JSON对象是动态JSON,一个JSON对象的列(键)可能与另一个对象的列不匹配。我目前正在res列上创建一个GIN索引,如下所示
CREATE INDEX gin_idx ON mytable USING gin (res)
使用GIN索引时,对这些列的筛选查询的性能不会显示任何改进。我的数据库中填充了50,000行数据。
在所有这些JSON对象中,只有'cid'列在所有json对象中都是常见的。
考虑到JSOn对象中的一个列/键可能不是另一个对象的一部分,哪种类型的索引最适合这种情况?