内容摘要:关于T-SQL过滤运算符的流行经验法则确实不少,但却不能够尽信,相反我们应该对自己的选择做出确切的评价。
ProductID = '754'
ProductID = '770'
虽然普遍的做法是最好避免使用编死的硬编码值,本例中使用这类值是为了隔离某些运算符对执行计划的影响,也就是任何来自和运算符本身无关的子查询的影响。
本例用了两个表:SalesOrderDetail表和Product表,每个表都有若干指定的索引:
Product表有四个索引:
PK_Product_ProductID(通过主键建立的聚集索引)
AK_Product_rowguid(唯一非聚集索引)
AK_Product_ProductNumber(唯一非聚集索引)
AK_Product_Name(唯一非聚集索引)
SalesOrderDetail表有三个索引:
PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID(通过主键建立的聚集索引)
IX_SalesOrderDetail_ProductID(非聚集索引)
AK_SalesOrderDetail_rowguid(唯一非聚集索引)
运算符类型
用于过滤操作的运算符分为两类:比较运算符和逻辑运算符。
比较运算符通过对两个值进行比较,确定这两个值是否满足条件。T-SQL中的比较运算符包括:
等于(=)
大于(>)
小于(<)
大于等于(>=)
小于等于(<=)
不等于(<>)
逻辑运算符对条件进行判断,并返回一个布尔逻辑值,显示是否满足该条件。T-SQL中的逻辑运算符包括:
ALL
ANY
BETWEEN
EXISTS
IN
LIKE
NOT
SOME
我们可以在复杂的过滤操作中同时运用比较运算符和逻辑运算符。当我们要使用多种运算符时,运算的顺序(运算符优先级)可能会影响查询的性能。T-SQL根据运算符的位置和类型来处理运算优先级:当使用的运算符都是相同类型(同是比较运算符)时,按照从左到右的顺序运算;当运算符属于不同类型时,比较运算符的优先级高于逻辑运算符。
来源:IT专家网 作者:cyw 责编:豆豆技术应用