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

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

内容摘要:关于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    责编:豆豆技术应用

正在加载评论...