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 位整数作为标识符,其域对数据库可以包含的外键总数设置了隐式上限。
并不是说你会接近超过这个限制。
表中外键数的建议限制为 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)
被引用(主)表不受此影响,因此主表可以被引用的次数没有限制。
归档时间: |
|
查看次数: |
5518 次 |
最近记录: |