根据建议,指标必须是最有选择性的,以提高性能。作为一般的指导方针,我们应该在表的行中经常查询不到15%的表创建索引--索引列/列中的不同值的数量与表中的记录数的比率表示索引的选择性。
具有良好选择性的示例有10万条记录,其中一个索引列有88000个不同的值,则该索引的选择性为88'000 / 10'0000 = 0.88.。
现在说到重点。我有一张有18万张唱片的桌子。在搜索条件中经常使用的字段是(1)使用用户名的搜索记录。字段类型:-> null,nvarchar(32)。唯一的记录是使用Active_date的627 (2)搜索记录。字段类型:-> DateTime,Null。唯一的记录是85627。(3)使用Current_state字段类型搜索记录:-> Not Null,nvarchar(32)。唯一的记录只有2条“待定”和“关闭”。
目前,上述所有字段都已编入索引。在选择性方面,(1)和(3)不是最有选择性的,我应该用它们来改善绩效吗?
谢谢你,山姆
发布于 2013-09-11 11:44:47
选择性并不能说明全部情况。假设有10份待处理的申请和1.000.000份已结案的申请。那么,状态索引并不是非常有选择性的,但它仍然非常有用!该索引将帮助人们快速浏览挂起的应用程序,这可能是他们经常做的事情。
另一个例子是票务系统。大部分工作都是在开票上完成的。因此,虽然票的状态不是很有选择性,但它仍然是索引的最佳候选。
只能使用索引中最左边的已知列来解析搜索。例如:
select * from Users where name = 'fred'(name)上的索引可用于解析此查询,但(active_date, name)上的索引不能。
https://stackoverflow.com/questions/18738993
复制相似问题