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

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

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

  介绍

  过滤操作对绝大多数复杂查询的编写来说非常重要。虽然在某些情况下你不需要用到过滤器,例如编写一个用来检索我国所有省份列表的简单查询就不需要;不过在大多数情况下,你需要过滤数据以便通过更精确的设定缩小查询范围。例如,当你需要一份以字母G开头的所有省份名单时,就得用到过滤机制。

  开发人员和数据库管理员有可以用各种运算符来执行这样的过滤操作。在决定使用何种运算符时需要优先考虑的问题是查询性能。可能有那么一些专家声称某些特定运算符要比别的好用,并提供一些经验法则之类的东西来指导您的选择。虽然这些经验法则大体而言还是不错的,不过对于任何的个别案例来说,都存在很多影响查询性能的因素,事实证明这些因素比一般法则更重要。对个别查询的用法和执行计划不加研究,而严格地按照经验规则来选择运算符,可能会导致查询达不到最佳性能。

  选择最佳运算符

  当我们将要为查询决定最佳运算符的选择时,首先要考虑将来该查询的使用情况。如果这个查询的使用频率很低,而且属于某个在活动不频繁时间才运行的进程的一部分(如深夜运行的SQL Server集成服务或数据转换服务包),那么长时间查询可能会比较合适。另一方面,如果可以运行该查询的时间很短,例如主营网上购物的商店,就需要对每项交易都执行一个查询,那么您可能会希望把时间花在获得最佳查询性能上,也就是说不仅要保证客户的体验,也要维护数据库服务器的稳定。

  我们还需要考虑如何为过滤取值,这些值又是从何处获得的。过滤值是单个值还是多个值?某些运算符能容纳的过滤值比其他运算符多。从另外一个表或子查询获得多个过滤值,而不是传递特定值,也可能会影响到你对运算符的选择。

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

正在加载评论...