我正在使用PostgreSQL 10.1 jsonb 数据类型并设计具有以下结构的JSON文档:
{
"guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a",
"name": "Angela Barton",
"is_active": true,
"company": "Magnafone",
"address": "178 Howard Place, Gulf, Washington, 702",
"registered": "2009-11-07T08:53:22 +08:00",
"latitude": 19.793713,
"longitude": 86.513373,
"timestamp": 2001-09-28 01:00:00,
"tags": [
"enim",
"aliquip",
"qui"
]
}
我需要通过基于标记进行搜索并按时间戳进行搜索来检索JSON文档。
我已阅读这些文档,并说 jsonb_path_ops 提供更好的性能:
索引标签,1。举了一个例子:
CREATE INDEX idxgintags ON api USING GIN ((jdoc -> 'tags'));
但是,该示例使用 jsonb_ops ,但我认为最好使用 jsonb_path_ops 。
根据我的案例的需求,即能够基于标签进行搜索和按时间戳排序,最佳方式是什么? strong>优化搜索性能 - 创建索引?如果专家可以给我创建索引的SQL和一些查询数据的例子,我将不胜感激。
谢谢!
答案 0 :(得分:2)
http://dbfiddle.uk/?rdbms=postgres_10&fiddle=cbb2336edf796f9b9458be64c4654394
因为你可以看到jsonb的一小部分有效的jsonb_ops接近于jsonb_path_ops。关闭尺寸,关闭时间,仅支持不同的操作员。如果你
,它会开始有很大的不同CREATE INDEX idxgintags ON api USING GIN (jdoc);