时间:2021-07-01 10:21:17 帮助过:27人阅读
清单1.1 -确保索引不存在
1 SET STATISTICS io ON 2 SET STATISTICS time ON 3 GO
清单1.2 -打开统计数据
上面的批处理通知SQL Server,我们希望我们的查询将性能信息作为输出的一部分返回。
第二个命令批处理:
1 SELECT * 2 FROM Person.Contact 3 WHERE FirstName = ‘Helen‘ 4 AND LastName = ‘Meyer‘; 5 GO
清单1.3 -检索一些数据
第二批检索“海伦·迈耶”行:
584 Helen Meyer helen2@adventure-works.com 0-519-555-0112
加上以下的业绩信息:
Table ‘Contact‘. Scan count 1, logical reads 569.
SQL Server Execution Times: CPU time = 3 ms.
这个输出告诉我们,我们的请求执行了569个逻辑IOs,需要大约3毫秒的处理器时间。处理器时间的值可能不同。
第三个命令批处理:
1 CREATE NONCLUSTERED INDEX FullName
2 ON Person.Contact
3 ( LastName, FirstName );
4 GO
清单1.4—创建非聚集索引
此批处理在Contact表的第一个和最后一个名称列上创建一个非聚集的复合索引。复合索引是一个索引,包含多个列来确定索引行序列。
第四个命令批处理:
1 SELECT * 2 FROM Person.Contact 3 WHERE FirstName = ‘Helen‘ 4 AND LastName = ‘Meyer‘; 5 GO
清单1.3(再一次)
这最后一批是我们最初的SELECT语句的重新执行。我们得到和以前一样的行;但这一次的性能统计数据是不同的
Table ‘Contact‘. Scan count 1, logical reads 4.
SQL Server Execution Times: CPU time = 0 ms.
这个输出告诉我们,我们的请求只需要4个逻辑IOs;而且需要一个不可估量的少量处理器时间来检索“海伦·梅耶”行。
结论
创建良好的索引可以极大地提高数据库性能。在下一层,我们将开始研究索引的物理结构。我们将研究为什么这个非聚集索引对这个查询如此有利,为什么可能不总是这样。未来的级别将包括其他类型的索引、索引的额外收益、与索引相关的成本、监视和维护索引和最佳实践;所有的目标都是为您提供必要的知识,以便为您自己的数据库中的表创建最佳索引方案。
本文翻译网址:http://www.sqlservercentral.com/articles/Stairway+Series/72284/
[翻译]——SQL Server索引的介绍:SQL Server索引级的阶梯
标签:地理 重要 from 基础 机制 说明 指示 内部使用 这一