2009-12-27 61 views
0

我有列A和B的表,其将在以下含义相关:SQL Server 2008的多列的统计信息

A == 1 => B == 3 
A == 2 => B == 0 
A == 3 => B == 7 

=>意思意味着具有高概率。我想这样查询:

where A = 2 and B = 3 --very few rows should match 

所以我创建了(A,B)的统计数据。但是查询优化器完全错误地将行计数减少了10倍。任何想法为什么?联合直方图应该允许非常精确的估计。 btw:基数(A)= 10,基数(B)= 5

+1

你可以接受更多的答案,也许 – gbn

+0

看我问的问题。我已经接受了解决我的问题的所有答案。我只是碰巧问了很多问题;-) – usr

回答

1

我怀疑优化器忽略统计信息,因为整个查询很重要,而不仅仅是WHERE子句。或者你有SELECT *。或者采样率太低(您是否使用FULLSCAN?)

如果您创建一个索引,它具有索引统计信息,该怎么办?还包括内含物以覆盖?

我从来没有创建过自己的列统计信息(除非图形查询计划提到它)。如果我需要创建它们,指数极有可能成为我的目的,更好

编辑:

+0

我确实使用了FULLSCAN。创建索引后,估算值变得更好。 – usr

+0

我错了:它不会变得更好! – usr

+0

查询是否完全覆盖索引? FULLSCAN的索引(与重建)? – gbn

相关问题