sql 服务器统计信息简介

sql服务器统计是包含数据分布信息的系统对象.有时,在正则列值中。统计可以在任何支持比较操作的数据类型上创建,例如 > , < , =等。

列表2-15中,dbo.books表中查看 IDX_BOOKS_ISBN 指数统计数据.您可以通过使用dbcc命令 SHOW_STATISTICS ('dbo.Books',IDX_BOOKS_ISBN )来实现这一点。如图3-1.

正如您所看到的,dbcc show_stums命令返回三个结果集。第一个包含关于统计的一般元数据信息,如名称、更新日期、更新统计时索引中的行数等等。第一个结果集中的步数列表示直方图中的步数/值(更多关于后面的部分)。该密度值不被查询优化器使用,仅用于向后兼容性目的。

第二个结果集,称为密度向量,包含了统计(指数)关键值组合的密度信息。它是根据一或多个不同的值公式计算的,并指示每个键值组合平均有多少行。

它是根据一或多个不同的值公式计算的,并指示每个键值组合平均有多少行。尽管IDX_Books_ISBN指针只定义了一个关键列,但它也包含了一个聚集的索引键,作为索引行的一部分。我们的表中有1,252,500种独特的 ISBN值, ISBN列的密度为1.0 / 1,252,500 = 7.984032E-07。所有的组合(ISBNbookid)列也是独一无二的,并且具有相同的密度。

最后一个结果集称为直方图。直方图中的所有记录,称为直方图的步,在统计数据(索引)最左边的列中包括样例键值,以及关于从前面到当前范围键值范围内的数据分布的信息。让我们更深入地看直方图的列。 RANGE_HI_KEY列存储密钥的示例值。此值是直方图步骤定义的范围的上界键值。例如,在图3-1的直方图中,记录(步骤)#3的距离RANGE_HI_KEY = '104-0100002488' 存储了关于从 ISBN > '101-0100001796'ISBN <= '104-0100002488'

     RANGE_ROWS列估计区间内的行数。在我们的例子中,由记录(步骤)#3定义的间隔有8,191行。

    EQ_ROWS指示有多少行的键值等于RANGE_HI_KEY的上界值。就我们的情况而言,只有一行的 ISBN = '104-0100002488' .

    DISTINCT_RANGE_ROWS指示间隔内的键有多少个不同的值。在我们的例子中,所有的键的值都是唯一的,如 DISTINCT_RANGE_ROWS = RANGE_ROWS .

    AVG_RANGE_ROWS表示区间内每个独立键值的平均行数。在我们的情况下,所有的键的值都是唯一的,所以 AVG_RANGE_ROWS = 1

让我们在索引中插入一组重复的ISBN值,代码如图3-1

现在,如果您再次运行SHOW_STATISTICS ('dbo.Books',IDX_BOOKS_ISBN ) 命令,您将看到图3-2所示的结果。

字首104ISBN值现在有了重复,这影响了直方图。还值得一提的是,第二个结果集中的密度信息也被改变了。

具有重复值的ISBNS的密度高于(isbnbookid)列的组合这个列是唯一的。

执行SELECT BookId, Title FROM dbo.Books WHERE ISBN LIKE 114%’语句,检查执行计划,如图3-3所示。

有两个重要的属性,大多数执行计划运算符都有。实际行数

指示在操作符执行期间处理了多少行。估计行数表示查询优化阶段sql服务器为该操作符估计的行数。sql服务器估计有2,625个行,ISNBS114开始。如图3-2您将看到第10步存储有关isbn区间数据分布的信息,其中包括您选择的值。即使采用近似线性估计,估计出的行数接近sql服务器确定的行数。

关于统计,有两件事要记住。

  1. 直方图仅为最左边的统计数据(索引)列存储有关数据分布的信息。有关于统计中关键值的多列密度的信息,但仅此而已。直方图中的所有其他信息只涉及最左边统计列的数据分布。
  2. sql服务器在直方图中最多保留200步,不管表的大小,也不管表是否分区。每个直方图步骤覆盖的间隔随着表的增长而增加。过大的表会导致统计数据不太准确。

    对于复合索引,当索引的所有列在所有查询中用作预测时,将密度较低/唯一值百分比较高的列定义为索引最左边的列是比较好的。这将使sql服务器能够更好地利用统计数据中的数据分布信息。然而,你应该考虑这些预测的限制搜索性(SARG)。例如,如果所有查询句中使用的都是 FirstName=@FirstName LastName=@LastName预测,那么最好将 LastName作为索引中最左边的列。尽管如此,对于FirstName=@FirstName and LastName<>@LastName,情况并非如此,在这些预测中, LastName 不是可以限制搜索的(SARG)。

猜你喜欢

转载自www.cnblogs.com/xxnzmy/p/10136898.html
今日推荐