Sql server (SQL Server)为什么GUID或其他随机值作为高阶键会导致碎片?

Sql server (SQL Server)为什么GUID或其他随机值作为高阶键会导致碎片?,sql-server,indexing,fragmentation,defragmentation,Sql Server,Indexing,Fragmentation,Defragmentation,我正在看Paul S Randal的索引碎片视频。在视频中,Paul说,GUID或其他作为高阶键的随机值会导致页面分裂,而这反过来又会导致索引碎片。原因是,随机值意味着新记录将插入到随机页面中,这可能会导致随机页面上的页面拆分。我的问题:如果新记录没有插入到随机页面中,页面分割仍然可能发生,对吗?如果这是真的,那么这两种情况有什么区别 顺便问一下,高阶键是否意味着主键?我不是以英语为母语的人,对此也不确定 谢谢。如果您的键是连续的,那么数据将全部附加在末尾,这意味着将根据需要创建新页面。然而,这

我正在看Paul S Randal的索引碎片视频。在视频中,Paul说,
GUID或其他作为高阶键的随机值会导致页面分裂,而这反过来又会导致索引碎片。原因是,随机值意味着新记录将插入到随机页面中,这可能会导致随机页面上的页面拆分。我的问题:如果新记录没有插入到随机页面中,页面分割仍然可能发生,对吗?如果这是真的,那么这两种情况有什么区别

顺便问一下,高阶键是否意味着主键
?我不是以英语为母语的人,对此也不确定


谢谢。

如果您的键是连续的,那么数据将全部附加在末尾,这意味着将根据需要创建新页面。然而,这将创建一个“热点”,在这个热点中,数据被推送到高容量系统中。解决方案是在某种分类字段上建立聚集索引,然后是递增的主键。

索引数据聚集在使用的键上。这里提到的“高阶”是因为索引可以是复合的,并且第一个成员对于顺序来说是最重要的

因此,如果这个成员是随机的(而且GUID必须被视为随机的,即使crypto人员不喜欢GUID的这个术语),您将得到比插入连续值更频繁的拆分,即使值不在范围的末尾


(这也是为什么在对集群主键使用GUID时,使用
NEWSEQUENTIALID()
而不是
NEWID()
有助于提高插入性能的原因)。

事实并非如此。热点意味着较长的缓存预期寿命,而分类字段意味着像GUID一样进行写入和拆分。“视情况而定”更正确。。。