2009-09-29 70 views
1

如果您有一个表,最多10条记录,并且它在许多其他表(通过FK关系)中引用,并且每个表中至少有1,000,000条记录。GUID vs Int

如果复制永远不会被使用,你会推荐什么类型的PK(GUID或tinyint)? 我碰到this page与followng摘录:

的GUID SQL Server上可以执行比数值类型快,一旦你超过 约100000现代五金行。这是由于索引 优化(的GUID块的级联)MS已经实施

是真实的GUID会在我的情况下执行得更快?

在此先感谢;)

回答

3

INT会更快 - 毫无疑问。并且使用更少的空间(好吧,有10行,这实际上并没有太大差别)。

INT是IMO也有很多更容易使用:

SELECT (list of fields) 
FROM dbo.MyTable 
WHERE ID = 5 

只是一大堆更容易编写和记忆比

SELECT (list of fields) 
FROM dbo.MyTable 
WHERE OID = '8D1E4C8C-54B9-4EB2-B123-FC07E340EC7B' 

所以我几乎总是(以+ 95%案件)把我的投票在INT而不是GUID。由于GUID作为SQL Server中的集群键(主键默认使用)对于性能来说非常糟糕(请阅读GUIDs as Primary Keys and/or the clustering key博客文章“The Queen of Indexing”,Kimberly Tripp关于该主题的背景信息),但是,我只是试图让它成为一种习惯,尽可能使用INT(可能:INT IDENTITY)作为我的主键和集群键。

Marc

3

如果有疑问,档案。但是在表格中有10行,我怀疑你会发现任何不同。

+0

我打算设计这个数据库,所以使用配置文件不是一个好主意 – 2009-09-29 10:52:29

0

如果你能保证你的表永远不会有超过10条记录,那么我会坚持使用整数。评论似乎只对非常大的表格(> 100,000行)有关。

3

小N的一切都很快。只需使用与数据库其余部分一致的PK类型。

4

对于引用table_with_10_rows的表中的行计数,如果这些表的行数超过10万行,它可能不会有任何说法。

+0

你的意思是GUID执行速度更快?如果是这样,你能告诉我为什么? – 2009-09-29 10:55:54

0

你应该考虑的另一个选择是使用tinyint代替int。看到这里的争论和反对:SOF question