我想在表上创建索引,并且我正在尝试根据列选择性来决定索引中列的顺序。
因此,最具选择性的列(最能缩小选择范围的列)将成为索引中的第一列,然后是第二个最具选择性的列等。
如何计算色谱柱的选择性?
答案 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个结果。减少服务器查找确切数据的工作量。