数据类型对PK有多大的性能影响?

时间:2013-12-20 11:37:42

标签: sql-server performance indexing

我参与了许多使用不同类型作为PK的系统。常见的类型有:

  • 的Int32
  • 的Int16
  • varchar(大小不等,通常约为16)
  • 唯一标识符

我知道字段中使用的内存越多,指标就越大,因此搜索速度越慢(显然nvarchar(1024)会非常糟糕!)

为PK列使用不同的数据类型时,性能如何变化(如果有)?

1 个答案:

答案 0 :(得分:2)

选择多个varchar列的组合作为主键,它变得很大。 SQL Server会自动在主键上添加聚簇索引,如果您还没有索引,索引也会变大(在varchar上比在整数列上大得多),这会导致用于存储索引的索引页数增加键。这会增加读取索引所需的读取次数并降低整体索引性能。整数需要较少的字节来存储,因此主键索引结构将更小。 此外,与整数连接相比,具有varchar的主键列可能使JOIN语句更慢。

如果您需要GUID密钥,

uniqueidentifier也很有用 - 保证在架构,数据库,服务器中的所有表中都是唯一的。但它们比整数的传统4字节索引值大4倍,这可能会有性能和存储缺点

您还可以查看有关GUID与int here

的费用的更多信息

这里Selecting the right datatype to improve database performance

希望这有帮助