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

豆豆网   技术应用频道   2008年01月16日  【字号: 收藏本文

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

  在接下来的例子当中,我们将评价四种最常用的运算符:等于比较运算符(=)和IN、 ANY、EXISTS三个逻辑运算符。

  等于比较运算符和IN逻辑运算符

  正如上面提到的,我们需要用一个查询来检索三个特定产品销售情况的详细资料。我们可以使用带等于比较运算符过滤的WHERE从句或带IN逻辑运算符过滤的WHERE从句来完成这个任务。

  比较运算符只能用来比较两个值。为了检测三个特定ProductID之间的等价关系,我们还需要用到OR运算符。下面就是使用了等于比较运算符的查询语句:

以下是引用片段:
  SELECT
  SalesOrderID,
  CarrierTrackingNumber,
  ProductID,
  UnitPrice
  FROM
  AdventureWorks.Sales.SalesOrderDetail
  WHERE
  (ProductID='762')or
  (ProductID='754')or
  (ProductID='770')

  相比之下,IN逻辑运算符使我们只需简单地使用一列自变量,也不需要使用OR或者AND:

以下是引用片段:
  SELECT
  SalesOrderID,
  CarrierTrackingNumber,
  ProductID,
  UnitPrice
  FROM
  AdventureWorks.Sales.SalesOrderDetail
  WHERE
  ProductIDIN('762','754','770')

  虽然本例中使用了确切值作为IN运算符的自变量,我们还可以通过子查询来获取自变量值。

  尽管两个查询语法区别非常明显,但是当在AdventureWorks数据库和这些特定表下运行时,这两个查询都生成相同的执行计划(见图一)。

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

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

正在加载评论...