首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从具体的表继承到单表继承会提高我的查询的性能吗?

从具体的表继承到单表继承会提高我的查询的性能吗?
EN

Database Administration用户
提问于 2014-11-13 14:05:53
回答 1查看 439关注 0票数 1

我目前有一个应用程序,允许人们查看和共享10种不同类型的帖子(如SportsPostWorldNewsPostTechnologyPost等)。所有posts类型在概念上都是相同的,但它们共享的列很少。例如,所有帖子都有user_iddescriptionemail_on_questionemail_on_bid列,但最重要的是将有10-20个唯一字段。总之,我认为60列中大约有8列是在post类型之间共享的。

由于有大量的唯一列,而且由于某些post类型具有独特的行为和子类型,我最初决定使用混凝土表继承 --每个对象都由一个单独的表表示,共享列在每个表上被重复:

代码语言:javascript
运行
复制
-- SportsPost -- | -- WorldNewsPost -- | -- TechnologyPost --
user_id            user_id               user_id
description        description           description
team               location              industry

这种方法的问题是很难查询和聚合所有的帖子。我有一个仪表板视图,其中列出了最近创建的20个帖子,为了检索该视图的数据,我必须对10个不同的表执行单独的查询!我在事务中执行所有10个查询,以避免多次往返,但我仍然担心,随着应用程序规模和新的post类型的创建,查询的性能将非常差。

现在我正在考虑切换到单表继承。我只需要执行一个查询,而不是对仪表板视图执行10+查询。这听起来像是一个合理的方法吗?STI (除了空列之外)是否有我不知道的缺点?

EN

回答 1

Database Administration用户

发布于 2014-11-14 17:45:36

如果您主要关注获取20条最新记录的复杂性,可以编写一个执行UNION所有表的视图,或者创建一个包含所有公共列的空父表,并使用PostgreSQL特定的继承特性继承所有其他表,以隐藏查询的视觉复杂性。尽管它可能不会提高查询的性能。

按照您的建议更改结构很可能会使您询问的特定查询更快,但其他只查询一种类型的记录的查询可能会变得更糟。您必须决定哪些查询更常见,哪些更重要。

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

https://dba.stackexchange.com/questions/82574

复制
相关文章

相似问题

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