如果您的表中的ID列是唯一标识符(Guid),那么在ID列上创建聚集主键是否有意义?
考虑到它们是全局唯一的,排序如何工作?
考虑到它们是全局唯一的,排序如何工作?
我强烈建议不要使用聚集的 Guid 键... 几年前由于这种糟糕的设计导致我们在 SQL Server 上遇到了严重的性能问题。
另外请查看:改善聚集索引 GUID 主键的性能
GUID作为它们本身就是可怕的性能,因为它们有效地是随机值(这“破坏”了聚簇索引),而且它们对于索引来说非常糟糕,因为单个页面/范围(SQL Server术语)上适合较少的条目。 SQL Server 2005引入了newsequentialid()
,有助于解决第一个问题。
在编程中,建立一个排序索引的想法本身非常好,因为这样搜索会变得非常高效。
然而问题在于,在GUID的情况下,我们从来不使用"WHERE GUID = xyz" 进行搜索。所以整个概念都被浪费了。因此,我建议最好在最常用作SARG的列上建立一条聚集索引,以提高查询的效率。