评价过滤运算符选择对T-SQL执行性能的影响机制

豆豆网   技术应用频道   2008年01月16日    社区交流

内容摘要:关于T-SQL过滤运算符的流行经验法则确实不少,但却不能够尽信,相反我们应该对自己的选择做出确切的评价。

  和前面的情况类似,在本例条件下的IN和EXISTS查询也生成了相同的执行计划(见图二):

评价过滤运算符选择对T-SQL执行性能的影响机制

  图二. ANY和EXISTS的执行计划:这两个逻辑运算符提供了相同的执行计划,引入了嵌套循环

  评价执行计划

  乍看之下,通过对这两个不同的执行计划进行比较显示,使用等于比较运算符和IN逻辑运算符生成的执行计划比使用ANY和EXISTS逻辑运算符生成的执行计划要简单得多。等于和IN运算符引发了索引扫描,而ANY和EXISTS运算符则引发了多重索引查找。

  ANY和EXISTS运算符在执行计划中引入了一个被称为嵌套循环的项。嵌套循环是指在多个数据集之间产生了联接(JOIN),在本例中是内联接(INNER JOIN)。

  当我们将光标悬停在上面的执行计划中显示的图标(节点)上时,我们可以看到,每一个图标都出现了一个信息列表。这四个信息项正是用来评价查询性能的:

  Estimated I/O Cost—— 这个数值代表用于执行此操作的数据输入和输出活动的预计开销。此值应尽可能低

  Estimated CPU Cost——这个数值代表用于此操作的处理器活动的预计开销。

  Estimated Operator Cost——这个数值代表用于执行此操作的查询优化器的预计开销以及此操作开销占总开销的百分比(括号中显示)。

  Estimated Subtree Cost——这个数值代表用于此操作以及同一子树内此操作之前的所有操作的总开销。

  很多因素会影响到这些数值的大小,包括数据库所在的服务器环境以及目前载入到SQL Server的活动等。

  I/O活动的预计开销

来源:IT专家网    作者:cyw    责编:豆豆技术应用

正在加载评论...