【发布时间】:2020-10-21 07:58:35
【问题描述】:
在 jsonb 列上创建索引会影响性能吗?原因是我有一个非常大的数据集要查询。设置是我的java模型(非常大)作为blob存储在我的数据库的jsonb列中。现在我想根据负载数据中的数据条件提取报告。所以我想知道在尝试提取这些统计信息时我的产品数据库是否会受到性能影响?添加索引对这个查询有帮助吗?
CREATE VIEW Reporting_View AS
Select dms.key AS "Id",
dms.data_model_type AS Data_Model_Type,
dms.short_type_name AS Short_Type_Name,
dms.version AS "Version",
dms.payload_data -> 'requestData' ->> 'modelType' AS Model_Type,
dms.payload_data -> 'requestData' ->> 'modelName' AS Model_Name,
dms.payload_data -> 'requestData' ->> 'modelVersion' AS Model_Version,
dms.payload_data -> 'requestData' -> 'arguments' ->> 'age' AS Age,
dms.payload_data -> 'requestData' -> 'arguments' ->> 'department' AS Department,
dms.payload_data -> 'requestData' -> 'arguments' ->> 'income' AS Income,
dms.payload_data -> 'output' ->> 'output' AS FinalResult
From myschema.data_model_storage dms;
【问题讨论】:
-
您必须共享查询,并让我们了解 JSON 的结构和保存它的表。
-
在一般查询中使用例如
@>操作符可以在列上使用use GIN 索引。创建索引是为了支持查询,因此如果没有查询,就无法真正回答问题。创建这样的索引是否会影响性能?是的,INSERT、DELETE 和 UPDATE 会更慢 - 慢多少取决于很多因素。 -
我已经用查询更新了我的问题。我试图让它尽可能简单,但实际上我可能还有 500 多个字段,但只会报告那些增加价值的字段
标签: sql json postgresql performance database-performance