首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大数据集上的PostgreSQL索引

大数据集上的PostgreSQL索引
EN

Stack Overflow用户
提问于 2020-10-21 15:58:36
回答 1查看 92关注 0票数 0

在jsonb列上创建索引会影响性能吗?原因是我有一个非常大的数据集,我想要查询。设置是将我的java模型(非常大)作为blobs存储在我的数据库的jsonb列中。现在,我想根据有效负载数据中的数据条件来拉取报告。所以我想知道当我尝试拉取这些统计数据时,我的prod db上是否会有性能影响?添加索引对此查询有帮助吗?

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

发布于 2020-10-21 23:49:34

您的视图没有WHERE子句,因此没有索引可以直接改进它。但是作为一个视图,您可以在访问它时添加WHERE子句,而不仅仅是在定义它时。但是您的视图并不公开payload_data本身,因此视图的用户无法获得它并对其使用索引。您可以在视图定义中使用的相同表达式上定义表达式索引,例如((payload_data -> 'requestData' ->> 'modelType')),这些表达式可以通过测试视图分配的列别名从视图中使用。

是的,维护索引确实是有成本的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64459118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档