内容摘要:关于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数据库和这些特定表下运行时,这两个查询都生成相同的执行计划(见图一)。

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