当前位置:Gxlcms > 数据库问题 > [翻译]——SQL Server索引的介绍:SQL Server索引级的阶梯

[翻译]——SQL Server索引的介绍:SQL Server索引级的阶梯

时间:2021-07-01 10:21:17 帮助过:27人阅读

IF EXISTS (SELECT * FROM sys.indexes 2 WHERE OBJECT_ID = OBJECT_ID(Person.Contact) 3 AND name = FullName) 4 DROP INDEX Person.Contact.FullName;
清单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   基础   机制   说明   指示   内部使用   这一   

人气教程排行