我有字母数字数据,最大长度为20个字符。我将把这些数据存储在类型NVARCHAR(20)
。
这些数据是CODES,必须是唯一的,因此我决定将其作为主键列。
但是,在询问another question时,有人“建议”我使用INT
列作为主键。
INT
主键并添加一个UNIQUE
约束或我当前设计的列?
我想我正在添加一个我不打算使用的新列,因为我需要NVARCHAR(20)
列进行搜索,并避免重复。换句话说,99%的where子句将具有NVARCHAR
列。
答案 0 :(得分:1)
我是数字合成主键的忠实粉丝。您想要的密钥可以声明为unique
,并且是密钥的属性。
以下是一些原因:
这些只是指导原则 - 您的问题是合成数字键是个好主意的原因。还有其他问题。例如,如果空间使用是一个非常大的问题,那么数字键的额外空间加上唯一索引可能会否定其他问题。