由于最近你的销售团队非常成功,顾客表增加了三倍,并被其它企业应用程序大量访问。即使这个表格有正确的索引,它也不是你在每一个应用程序要求的事务中希望读取的表格。
为减少不必要的数据库读取,应用OUTPUT子句增加记录到一个表格变量中。在步骤二和步骤三中,将你的表格与这个表格变量而非顾客表联结起来。应用这个技巧就可以节省大量的缓冲内存和输入/输出过程。
注:微软并不推荐应用带巨大数据集的表格变量。如果你发现你的应用程序需要使用OUTPUT子句来获得大量的数据,使用一个临时的表格。临时表位于临时数据库中,并允许编写索引。
试验一下
在上面的例子中,我们检验了将应用OUTPUT语句在顾客表中插入的记录保存下来,并在后面的事务中应用这些数据的做法。运行列表A中的脚本来建立例子中需要的数据结构。
现在我们已建立了自己的数据结构,现在我们就能够试验一下OUTPUT语句的工作步骤。因为表格变量位于SQL Server 2005的内存中,且当执行过程完成后即被丢弃,所以你需要同时运行列表B中的脚本。
代码声明了一个表格变量,并将一个记录插入到顾客表中。除了插入语句外,我们还应用INSERTED表将一个新的记录值增加到我们的表格变量中。此时,你可以使用表格变量来替代应用程序步骤二步骤三中的顾客表。
反思时间
SQL Server 2005中的新OUTPUT特性给你许多设计应用程序的新启示。不需调用其它数据库就能访问被更改的数据的能力可帮助你优化你的应用程序。另外,你还能应用OUTPUT子句,在不使用DML触发器的情况下建立定制审核。
Tim Chapman是一名在肯塔基州路易斯维尔银行工作的SQL Server数据库管理员,拥有7年以上的IT工作经验。
责任编辑:张琎
用户评论