PostgreSQL:PostgreSQL数据库中可以存储的最大表数是多少?

PostgreSQL:PostgreSQL数据库中可以存储的最大表数是多少?,postgresql,Postgresql,Q1:数据库中可以存储的最大表数是多少 Q2:视图中可以显示的最大表数是多少 Q1:没有明确的限制。在实际应用中,有些操作是对表数的O(n);预计计划时间会增加,当您在一个数据库中获得数千或上万个表时,会出现诸如autovacuum之类的问题 问题2:这取决于查询。一般来说,庞大的工会是个坏主意。表继承的效果会更好一些,但是如果使用constraint\u exclusion将大大增加计划时间 这两个问题都表明您的设计存在潜在问题。你不应该需要大量的表格和庞大的工会 根据另一个答案中的注释,您实

Q1:数据库中可以存储的最大表数是多少


Q2:视图中可以显示的最大表数是多少

Q1:没有明确的限制。在实际应用中,有些操作是对表数的O(n);预计计划时间会增加,当您在一个数据库中获得数千或上万个表时,会出现诸如autovacuum之类的问题

问题2:这取决于查询。一般来说,庞大的工会是个坏主意。表继承的效果会更好一些,但是如果使用
constraint\u exclusion
将大大增加计划时间

这两个问题都表明您的设计存在潜在问题。你不应该需要大量的表格和庞大的工会

根据另一个答案中的注释,您实际上应该只创建几个表。您似乎希望为每个电话号码创建一个表,这是毫无意义的,并在上面为每个号码创建视图。不要这样做,这是对数据的错误建模,会使数据更难处理,而不是更容易处理。索引、where子句和联接将允许您在将数据逻辑结构到几个表中时更有效地使用数据。我建议学习基本的关系建模


如果您以后遇到可伸缩性问题,您可以查看,但不需要数千个表。

从实际意义上讲,两者都是没有限制的

数据库可以容纳的表数受磁盘系统空间的限制。然而,拥有一个包含数千个以上表的数据库可能更像是对应用程序域的错误分析的表现。联合也是如此:如果您必须联合多个表,那么您可能应该查看您的表结构

一种可能发生这种情况的实际场景是Postgis:具有类似属性的多个表可以在单个视图中连接(这是Postgis IMHO设计中的一个缺陷),但通常会在应用程序端处理(例如GIS)


您能否解释一下您需要在一次扫描中查询大量表的场景?

场景如下:我想创建一个名为“Call Details Recorder”的数据库。在这里,我想以不同的方式存储每个被叫号码和塔台号码的号码表,也应该以百万为单位。我还想分别为每个被叫号码创建视图,以便进一步查询。因此,如果我理解正确,您想存储移动电话对话,记录哪个号码呼叫另一个号码,以及这些电话是通过哪个电话塔注册的?如果是这样的话,那么您需要一个用于塔楼的单表,一个用于所有电话号码的单表,其中包含呼叫者姓名和您拥有的其他详细信息。两个表都有一个主键,然后创建第三个表,记录调用者pkey、接收者pkey、塔台pkey、通话时间、持续时间等。创建视图非常简单。你觉得哪里需要很多桌子?@user3382347是的,听起来你需要四五张桌子,而不是几千张。不要为每个数字创建视图,使用SQL函数或简单的
where
子句。“你可能需要按比例进行,但你不需要(或想要)数千张桌子。”克雷格,谢谢你。我见过的最大的数据库是JD Edwards(我想)ERP系统。它有大约20000个表在Oracle上运行。但这绝对是一个离群值。@MikeSherrill'CatRecall'由于(ab)对穷人的分区使用了
search\u path
,在分区中模式是根据每个客户克隆的,所以看到更高的表计数并不是很少见。@CraigRinger:我没有想到这一点。我很少使用多租户体系结构。(我有点感激。)