2012-03-20 159 views
2

如果您为主键使用一种数据类型而不是另一种数据类型,那么性能是否会受到影响?主键数据类型是否影响性能? SQL Server 2008

我有一个很大的数据库,会经常查询,但只写入一年一次。如果我提供一个增量主键(整数)或者让SQL Server为它提供一个GUID,它会有什么关系吗?

+0

命中是关于**聚类键**(不是主键)。集群密钥被复制到表中的每个非聚集索引中。因此,如果桌面上有几个NC指数,那么是的 - 集群密钥的大小和属性可能对您的PER具有**巨大**影响。在[Kimberly Tripp的优秀博客](http://www.sqlskills.com/BLOGS/KIMBERLY/category/Clustering-Key.aspx)阅读所有内容 – 2012-03-20 13:40:37

回答

6

性能受到影响,特别是对于大量数据。

一般来说,使用最小的数据类型可以满足您的需求(如果需要,您可以随时使用更大的数据类型)。

当涉及到INT(4)UNIQUIDENTIFIER,前者是更多更小,占用更少的磁盘空间和更少的字节通过电线。这也意味着使用这种PK的索引将更小。当然,所有这些数据也需要适应内存,所以你越能适应内存越好。

+0

有点什么我想。将文本用作主键怎么样?像三个字母的文本代码。那也应该是一个整数而不是文本?当它允许我接受答案时,谢谢。 – wootscootinboogie 2012-03-20 13:22:46

+0

@DarrinCecil - 如果你知道它足够了,'CHAR(3)'或'NCHAR(3)'可能是更好的选择。 – Oded 2012-03-20 13:24:23

+0

其中nchar(3)与int为主键是我的意思。抱歉。这个数据库将会非常大,大约5个演出(大约一百万行的几张桌子)。 – wootscootinboogie 2012-03-20 13:27:21