如何计算柱选择性

时间:2009-12-16 21:37:31

标签: indexing rdbms

我想在表上创建索引,并且我正在尝试根据列选择性来决定索引中列的顺序。

因此,最具选择性的列(最能缩小选择范围的列)将成为索引中的第一列,然后是第二个最具选择性的列等。

如何计算色谱柱的选择性?

2 个答案:

答案 0 :(得分:7)

每列的比例很简单:

(列的唯一值数)到(表中的行数)

计算数字取决于您的RDBMS。对于SQL Server,您可以按如下方式获取数字:

SELECT COUNT(DISTINCT ColumnName) FROM TableName

SELECT COUNT(*) FROM TableName

答案 1 :(得分:0)

在常见的情况下,Randolpho是对的。但是当SELECT COUNT(*), ColumnName具有类似的东西时,你可以遇到这种情况 10000 A
2 B
2 C
2 D
并且COUNT(*), ColumnName2将有 2 A1
2 B1
2 C1

根据您的公式,ColumnName具有更高的选择性,但对于索引,最好将ColumnName2包含为索引中的第一列。

逻辑是这样的 - 在第一列过滤之后你可能有10000个结果,但是通过ColumnName2过滤你将得到2个结果。减少服务器查找确切数据的工作量。