什么是“健壮”的T-SQL语句?
在这里,“健壮”的定义跟程序中的定义可能会有一些差异,但是目的是一样的,那便是令代码更稳定、更高效地执行。
想要使T-SQL代码更“健壮”,需要对T-SQL的语法行为有较深入的了解,这样才能更准确地预测,才能根据不同的情况修改SQL语句的编写方式,从而达到数据库中语句生成的执行计划更加准确和高效的目的。
举一个简单的例子,请看下面的这段代码:
--Query1 SELECT COUNT(1) FROM Person.EmailAddress AS ea WHERE ea.EmailAddress LIKE 'lin%'; --Query2 SELECT COUNT(1) FROM Person.EmailAddress AS ea WHERE LEFT(ea.EmailAddress,3)='lin';
以上代码包含两条查询语句,这两条语句的目的是一样的,都是获取以“lin”起始的邮箱地址的个数。这两条语句最终执行返回的结果是一样的,都是84笔数据,如图3-1
所示。
虽然执行返回的结果是相同的,但是它们的执行成本却有着很大的差异,对比下面的执行情况,如图3-2所示。
从图3-2可以很清楚地看出,Query 1只使用了2%的查询成本(Query cost),而Query 2
则使用了98%的查询成本。因此,在这种情况下,使用Query 1会更合适,也就是说,它是一条更为“健壮”的查询语句。
看完上述示例后,相信读者对于“健壮”有了一个初步的认识。当然,这还只是一个简单的示例,想在编码习惯上获得更有成效的提升,还需要对更多的数据库行为有更深入的了解,这也是本书的主要目的。接下来会简要介绍更多的语句,包括查询语句,以及查询语句的排序子句、汇总子句等。
下面详细介绍各种不同类型语句达到高效的注意事项。