2009-06-09 109 views
0

如果uniqueidentifier数据类型列在表sql server 2005/2008中是聚簇/非聚簇索引,将会产生什么影响?我读它是设计糟糕的桌子,如何避免这个问题,什么是最好的解决方案?uniqueidentifier与索引

回答

1

如果非聚集,它只是意味着该指数将是宽的(每行16个字节,而不是每行4个字节的整数)。

如果群集,然后插入会导致页拆分,这取决于有多少可用空间(填充因数),你的指数在创建/重建它离开。

上有SO讨论这个话题了几个问题:

Should I get rid of clustered indexes on Guid columns

Advantages and disadvantages of GUID/UUID database keys

Clustered primary key on unique identifier ID column in SQL Server

Improving performance of cluster index GUID primary key

0

GUID是在SQL Server群集索引一个不错的选择,因为由于它的随机性,集群编辑索引变得非常分散。

此外,由于聚集索引字段(S)被复制到每个非群集索引,它也可能导致磁盘和内存空间在SQL Server的显著浪费。

GUID是从程序员的角度来看一个不错的选择 - 或多或少随机的,几乎可以保证是唯一的 - 但是从数据库的角度,用它们作为在SQL Server聚集索引是很不错的选择。

见金Tripp的关于这个的各种物品 - 非常englihtnening!

http://sqlskills.com/BLOGS/KIMBERLY/post/The-Clustered-Index-Debate-Continues.aspx

http://www.sqlskills.com/BLOGS/KIMBERLY/post/Ever-increasing-clustering-key-the-Clustered-Index-Debateagain!.aspx

马克

+0

如果剩余空间(i..e填充因子)在一个GUID一个聚集索引,它不一定是一样糟糕经常被报道。如果你有正常的索引权威和仔细考虑过的填充因子。这样说,我尽量不要在GUIDS上创建聚簇索引... – 2009-06-09 11:31:33