SQL统计和索引 - 它们有多详细?

sgm*_*ore 5 sql-server statistics performance

统计信息(有助于决定是否使用索引)会考虑每个实际列值的行数,还是仅使用每个值的平均行数.

假设我有一个名为active的位列的表,它有一百万行,但99.99%设置为false.如果我在这个列上有一个索引,那么Sql足够聪明,如果搜索active = 1就知道使用索引但是如果搜索active = 0则没有意义.

另一个例子,如果我有一个表有1,000,000条记录,其索引列包含大约50,000个不同的值,每个值的平均行数为10,但是一个特殊值有500,000行.如果搜索此特殊记录,索引可能没用,但在查找任何其他代码时非常有用.

但这种特殊情况是否会破坏指数的有效性.

小智 1

它创建一个直方图并因此使用它。

有了位列,就可以很好地知道有多少个 0 和 1

对于字符串列,我将大致了解“带”(以 a、b、c 等开头的值)。对于数字也是如此(它创建 x 个值范围带)。

只需查看管理工作室中的统计数据如何 - 您实际上可以访问直方图。