我必须使用数据库来进行报告 数据库非常大:416 055 104行 每行都很轻,只有布尔和int id。
每行由3列标识,但令我惊讶的是,它上面没有主键。 只有具有唯一约束的聚簇索引。
所以知道了,我有两个问题。
关于问题2
创建新主键还会创建要与之关联的非聚集索引(已存在已存在的聚簇索引)。
这是不我在寻找什么。我希望保留相同的索引,但也要将其作为主键。
答案 0 :(得分:2)
好问题。
如果您已经在非可空列上拥有唯一索引,那么您有一个候选键。我不知道将这个作为“官方”主键的任何特殊好处。事实上,我有一种感觉,即没有将其作为PK将提供更大的灵活性。
答案 1 :(得分:2)
PRIMARY KEY和非可空列上的UNIQUE约束之间几乎没有区别。因此,如果有问题的列不可为空,那么我建议你什么都不做。将候选键作为主键的主要原因是,如果您有一些软件(例如数据建模工具或其他开发工具)希望使用PRIMARY KEY约束来标识密钥。
答案 2 :(得分:1)
唯一索引可以允许null 值。主键不能。
我相信你不能将现有索引“标记”为主键。你必须放弃它并重新创建。为了避免这些问题,我会说在此之前将TABLOCKX, HOLDLOCK
放在桌面上会很好。