我参与了许多使用不同类型作为PK的系统。常见的类型有:
我知道字段中使用的内存越多,指标就越大,因此搜索速度越慢(显然nvarchar(1024)会非常糟糕!)
为PK列使用不同的数据类型时,性能如何变化(如果有)?
答案 0 :(得分:2)
选择多个varchar列的组合作为主键,它变得很大。 SQL Server会自动在主键上添加聚簇索引,如果您还没有索引,索引也会变大(在varchar上比在整数列上大得多),这会导致用于存储索引的索引页数增加键。这会增加读取索引所需的读取次数并降低整体索引性能。整数需要较少的字节来存储,因此主键索引结构将更小。 此外,与整数连接相比,具有varchar的主键列可能使JOIN语句更慢。
如果您需要GUID密钥,uniqueidentifier也很有用 - 保证在架构,数据库,服务器中的所有表中都是唯一的。但它们比整数的传统4字节索引值大4倍,这可能会有性能和存储缺点
您还可以查看有关GUID与int here
的费用的更多信息这里Selecting the right datatype to improve database performance
希望这有帮助