这篇文章通过文字代码的形式讲解了如何处理用自增长键列的统计信息。我们都知道,在sql Server里每个统计信息对象都有关联的直方图。直方图用多个步长描述指定列数据分布情况。在一个直方图里,sql Server最大支持200的步长,但当你查询的数据范围在直方图最后步长后,这是个问题。我们来看下面的代码,重现这个情形:
-- Create a Non-Unique Clustered Index on the table
CREATE CLUSTERED INDEX idx_CI ON Orders(OrderDate)
GO
-- Insert 31465 rows from the AdventureWorks2008r2 database
INSERT INTO Orders (OrderDate,Col2,Col3) SELECT OrderDate,CustomerID,TerritoryID FROM AdventureWorks2008R2.Sales.SalesOrderHeader
GO
-- Rebuild the Clustered Index,so that we get fresh statistics.
-- The last value in the Histogram is 2008-07-31.
ALTER INDEX idx_CI ON Orders REBUILD
GO
-- Insert 200 additional rows after the last step in the Histogram
INSERT INTO Orders (OrderDate,Col3)
VALUES ('20100101',1,1)
GO 200
在索引重建后,我们再看下直方图,我们发现最后步进的值是2008-07-31。