【发布时间】:2020-06-15 09:32:20
【问题描述】:
我正在尝试在 PostgreSQL 数据库中查询 FHIR 数据。数据存储在 jsonb 字段中。虽然以下查询产生相同的结果,但我想知道在性能或执行计划方面是否存在任何重大差异。
查询 1 - 使用 ->> 运算符
SELECT resource->'subject' FROM resourcetable
WHERE resource ->> 'resourceType' = 'MedicationRequest' AND resource ->> 'status' = 'active';
查询 2 - 使用 jsonb_path_match 函数
SELECT jsonb_path_query(resource, '$.subject') from resourcetable
WHERE jsonb_path_match(resource, '$.resourceType == "MedicationRequest"')
AND jsonb_path_match(resource, '$.status=="active"');
【问题讨论】:
-
两者都尝试会发生什么?
-
同样的结果;我最感兴趣的是性能和执行方面
-
您需要使用
EXPLAIN ANALYZEouptut 比较执行计划。
标签: postgresql jsonb