我们知道在一个表中只能有一个主键,那么有没有办法知道表中唯一键的最大数目呢?我读过一篇文章,根据该文章,没有唯一键依赖于聚集索引的数量。
查看此链接http://www.orafaq.com/forum/t/152739/
如果是SQL Server,请检查SQL Server的最大容量规格
我认为你混淆了unique
约束和clustered
约束。
-
Unique
键是一个键,你可以很容易地告诉哪个确切的记录你正在处理。 -
Clustered
键是处理记录在硬盘上物理位置的键。
所以你可以为你的记录设置许多唯一的约束,但只有一个约束会对磁盘上的记录进行排序。如果您使用的是MS SQL服务器,请参考@user3414693所提到的链接:
每个表的非聚集索引:
999(最大大小/数字SQL Server(32位))
999 SQL Server(64位)
您应该注意,这里是表的所有索引,而不仅仅是唯一的索引。
现在找不到Oracle的具体信息
PS:您还应该注意,如果主键是uniqueidentifier
类型的列,那么将主键作为集群键可能会对大型表造成严重的性能问题。真正的Uniqueidentifier是一个非常非常大的数字,并且它不像IDENTITY
列那样排序,因此在添加新记录时,当您必须在物理上移动所有表数据时,可能会面临这样的情况。