请使用索引吧!
在很多查询中,索引可以带来多方面的好处。例如,索引除了可以覆盖查
询外,还使得可以进行范围查询。SQL Server 可以在同一个查询中为一个表
使用多个索引,并可以合并多个索引(使用联接算法),以便搜索关键字共同
覆盖一个查询。另外,SQL Server 会自动确定利用哪些索引进行查询,并且能
够在表被改动时确保该表的所有索引都得到维护。
设计索引方法:
当 MSSQL Server执行查询时,查询优化器会对可用的数据检索方法的成本
进行评估,从中选用最有效的方法。SQL Server 可以扫描表,如果索引存在则
使用索引。当 SQL Server 执行表扫描时,它从表的第一行开始逐行查找,将
符合查询条件的行提取出来。当 SQL Server 使用索引时,它会查找查询所需
的行的存储位置,并只提取出所需的行。
在考虑是否为一个列创建索引时,应考虑被索引的列是否以及如何用于查询中。
索引对下列查询很有帮助:
1.搜索符合特定搜索关键字值的行(精确匹配查询)。精确匹配比较是指查询使用
WHERE 语句指定具有给定值的列条目。例如:
WHERE emp_id = 'VPA30890F'
2.搜索其搜索关键字值为范围值的行(范围查询)。范围查询是指查询指定其值
介于两个值之间的任何条目。例如:
WHERE job_lvl BETWEEN 9 and 12
或
WHERE job_lvl >= 9 and job_lvl <= 12
3.在表 T1 中搜索根据联接谓词与表 T2 中的某个行匹配的行(索引嵌套循环联接)。
4.在不进行显式排序操作的情况下产生经排序的查询输出,尤其是经排序的动态
游标。
5.在不进行显式排序操作的情况下,按一种有序的顺序对行进行扫描,以允许基
于顺序的操作,如合并联接和流聚合。
6.以优于表扫描的性能对表中所有的行进行扫描,性能提高是由于减少了要扫描的
列集和数据总量(该查询有覆盖索引可供使用)。
7.插入和更新操作中重复的新搜索关键字值,以实施 PRIMARY KEY 和 UNIQUE
约束。
8.已定义了 FOREIGN KEY 约束的两个表之间匹配的行。
9. LIKE 比较进行查询时,如果模式以特定字符串如"abc%"开头,使用索引则
会提高效率;如果模式以通配符如"%xyz"开头,则索引不起作用。