WEB开发网
开发学院数据库MSSQL Server 理解SQL Server的SQL查询计划 阅读

理解SQL Server的SQL查询计划

 2007-05-15 09:27:10 来源:WEB开发网   
核心提示: 为了获得最全面的性能测量信息,使用SET STATISTICS IO 和SET STATISTICS TIME也是很重要的,理解SQL Server的SQL查询计划(6),理解连接的影响上文的不同查询步骤展示了SQL Server 2000是如何运用大量的操作来解析Join(连接)的,每一

为了获得最全面的性能测量信息,使用SET STATISTICS IO 和SET STATISTICS TIME也是很重要的。

理解连接的影响

上文的不同查询步骤展示了SQL Server 2000是如何运用大量的操作来解析Join(连接)的。每一个Join策略都有它的长处和短处。然而,在某些罕见的情况下,查询引擎会选择效率较低的策略,如通常使用的Hash(散列)或Merge(合并)策略,而采用简单的嵌套循环就足以提供很好的性能。

SQL Server 使用三种join(连接)策略,这里由简单到复杂分别列出:

嵌套循环

对于使用简单内连接的小数据量表,嵌套循环是最佳策略。最适合两个表的记录数差别非常大,并且在连接的列上都有索引的情况。嵌套循环连接所需的I/O和比较都是最少的。

嵌套循环在外表(往往是小数据量的表)中每次循环一个记录,然后在内表中查找所匹配的记录并输出。有很多关于嵌套循环策略的名字。例如,对整个表或索引进行查询,称为Naive(无知的)嵌套循环连接。使用正常索引或临时索引时,被称为索引嵌套循环连接或临时索引嵌套循环连接。

合并

对于使用了排序连接列的大数据量并数据量相似的表,合并是最佳的策略。合并操作首先进行排序,然后对所有数据进行循环并产生输出。良好的合并连接性能基于在相应的列上建立索引,通常在连接谓词等式中用到的列。

合并连接发挥了预先排序的优点,从每个输出中获得行数据,直接进行比较操作。例如,例如,内连接返回的是连接谓词相等的记录。如果不相等,含更低值的记录将会被丢弃,并且用下一条记录进行比较。这个过程将持续直到所有的记录都被检查完。有时合并连接被用来比较具有多对多关系的表。当这种情况发生时,SQL Server用临时表来存储这些行。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:理解 SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接