SQL Server 一个表可以作为外键引用的最大次数?

4 sql-server

SQL Server 数据库中通过外键引用单个表的次数是否有上限?

IE

Table A A_ID

Table B ~ B_ID, A_ID  
Table C ~ C_ID, A_ID  
Table D ~ D_ID, A_ID  
...
Run Code Online (Sandbox Code Playgroud)

小智 8

最简洁的答案是不。” 更长的答案是没有明确的限制,但由于这些关系需要元数据,因此确实会消耗内存和资源:如果您有 10,000 个外键关系到单个表的主键,您可能会发现delete对照参考表可能有点……痛苦。

以下是文档的内容:

表中 FOREIGN KEY 约束的数量

SQL Server 对表可以包含的 FOREIGN KEY 约束的数量(引用其他表)或引用特定表的其他表拥有的 FOREIGN KEY 约束的数量没有预定义的限制。然而, FOREIGN KEY 约束的实际数量受硬件配置以及数据库和应用程序设计的限制。我们建议一个表包含不超过 253 个 FOREIGN KEY 约束,并且它被不超过 253 个 FOREIGN KEY 约束引用。在设计数据库和应用程序时考虑强制执行 FOREIGN KEY 约束的成本。

不过,还应该注意的是,SQL Server 的系统视图(例如,sys.objects)使用 32 位整数作为标识符,其域对数据库可以包含的外键总数设置了隐式上限。

并不是说你会接近超过这个限制。


Oli*_*bes 6

表中外键数的建议限制为 253。请参阅MSDN 上SQL Server 的最大容量规范

微软说:

“虽然一个表可以包含无限数量的 FOREIGN KEY 约束,但建议的最大值是 253。根据托管 SQL Server 的硬件配置,指定额外的 FOREIGN KEY 约束对于查询优化器来说可能会很昂贵。”

请注意,这些限制适用于详细信息表,该表包含外键。您将外键约束添加到详细信息表。

ALTER TABLE Detail 
ADD FOREIGN KEY (fk_main_id) REFERENCES Main (pk_main_id);
Run Code Online (Sandbox Code Playgroud)

被引用(主)表不受此影响,因此主表可以被引用的次数没有限制。