怎么SQL Server确定是否有一个表列有低基数?

我想问的原因是由于查询的优化将最有可能不使用指数上的两性柱(值'm'和'f')。但是它如何确定该基数的性别列来到这个决定?

在此,如果在不太可能发生的事件,我有一万条目在我的桌子,只有一个条目中性别问题列为'm',就SQL服务器能够确定和使用的指数检索这一行?或者这只是知道只有2个不同的价值观在列,而不使用指数?

我赞赏上述讨论了一些可怜的db设计的,但我只是试图理解如何查询优化涉及到其的决定。

非常感谢。

有帮助吗?

解决方案

看看 统计数字使用的查询,优化在Microsoft SQL Server2005年 .

1价值'm'和999999'f'的统计数据将得到基数的估计的1'm',和一些接近1M为'f'。但是,这是否指标将被用于或不,还有更多的因素。

在一般性如此低的选择性栏没有意义上的索引独自一人。然而,它不会有意义,作为一个左列在一个更复杂的指数,甚至作为一个左列在聚集指数。甚至如果列将是有意义的对'm',而不是对于"f",查询自动参数化可扮演一个把戏对你而产生的计划 变量 @性别的来代替。

你必须要么读取或多或得到更多详细信息。一些很好的资源是酷伯的团队和团队成员的博客:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top