Q1:数据库中可存储的最大表数是多少?
Q2:视图中可以结合的最大表数是多少?
答案 0 :(得分:16)
Q1:the docs没有明确的限制。在实践中,一些操作在表的数量上是O(n);期望计划时间增加,以及在数据库中获得数千或数万个表时autovacuum等问题。
Q2:这取决于查询。一般来说,庞大的工会是一个坏主意。表继承可以更好地工作,但如果您使用constraint_exclusion
将导致计划时间大大增加。
这两个问题都表明您的设计存在潜在问题。你不应该需要大量的表和巨型工会。
通过另一个答案中的评论,您应该只是创建一些表。您似乎想要为每个电话号码创建一个表,这是荒谬的,并且在每个电话号码的基础上创建视图。不要这样做,它是对数据进行处理,并使其更难,更容易使用。索引,where子句和连接将允许您在逻辑上将数据结构化为几个表时更有效地使用数据。我建议学习基本的关系建模。
如果您稍后遇到可扩展性问题,可以查看partitioning,但不需要数千个表格。
答案 1 :(得分:2)
在实际意义上,两者都是无限制的。
数据库可容纳的表数受磁盘系统空间的限制。但是,拥有一个包含超过几千个表的数据库可能更多地表达了对应用程序域的错误分析。对于工会也是如此:如果你必须联合多个表,你可能应该看看你的表结构。
可能发生这种情况的一个实际情况是使用Postgis:有许多具有类似属性的表可以在单个视图中连接(这是Postgis IMHO设计中的一个缺陷),但通常会在应用程序中处理方(例如GIS)。
您能解释一下您需要在一次扫描中需要查询的大量表格的场景吗?