从一开始就遵循的规则之一是,避免基于递增键创建聚簇索引,如在这些Index Optimization Tips中找到的那样.
现在使用sql Server 2005和sql Server 2008,我有强烈的印象,情况发生了变化.同时,这些主键列是表的聚簇索引的完美第一候选者.
解决方法
这与数据页面使用的“热点”以及整个2k页(sql Server 7及更高版本使用8k页)被锁定的事实有关,而不是插入的行
编辑,2012年2月
发现Kimberly L. Tripp的权威文章
@L_403_3@
Hotspots were something that we greatly tried to avoid PRIOR to sql Server 7.0 because of page level locking (and this is where the term hot spot became a negative term). In fact,it doesn’t have to be a negative term. However,since the storage engine was rearchitected/redesigned (in sql Server 7.0) and now includes true row level locking,this motivation (to avoid hotspots) is no longer there.
编辑,2013年5月
lucky7_2000的答案中的链接似乎表明热点可以存在而且会引发问题.
但是,本文使用TranTime上的非唯一聚簇索引.这需要添加uniquifier.这意味着指数不是严格单调增加(而且太宽).该答案中的链接与此答案或我的链接并不矛盾