从一开始就遵循的规则之一是,避免基于递增键创建聚簇索引,如在这些Index Optimization Tips中找到的那样.
现在使用sql Server 2005和sql Server 2008,我有强烈的印象,情况发生了变化.同时,这些主键列是表的聚簇索引的完美第一候选者.
解决方法
这与数据页面使用的“热点”以及整个2k页(sql Server 7及更高版本使用8k页)被锁定的事实有关,而不是插入的行
编辑,2012年2月
发现Kimberly L. Tripp的权威文章
“The Clustered Index Debate Continues…”
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.这意味着指数不是严格单调增加(而且太宽).该答案中的链接与此答案或我的链接并不矛盾