WEB开发网
开发学院数据库MSSQL Server 调优 SQL 过程 阅读

调优 SQL 过程

 2008-09-09 10:03:14 来源:WEB开发网   
核心提示: 真是令人印象深刻!仅仅通过使用内联 SQL PL 就使所监控代码的运行速度提高了三倍,甚至连不返回结果集的简单 SQL 过程也可以用 SQL 函数取代,调优 SQL 过程(3),对于返回不止一个参数的过程,可以使用 SQL 表函数,然后,当不再需要这个临时表时,它返回一个包含一行的表 &

调优 SQL 过程

真是令人印象深刻!仅仅通过使用内联 SQL PL 就使所监控代码的运行速度提高了三倍。甚至连不返回结果集的简单 SQL 过程也可以用 SQL 函数取代。对于返回不止一个参数的过程,可以使用 SQL 表函数,它返回一个包含一行的表 —— 每个输出参数为一列。对于包含一个输出的过程,可以只使用一个标量 SQL 函数。注意,DB2 V8.2 还支持在 SQL 表函数中包含 UPDATE、DELETE、INSERT 和 MERGE。这意味着您甚至可以使用内联 SQL PL 封装数据库更改。

使用临时表

DB2 支持已声明的全局临时表(Declared Global Temporary Table,DGTT)。用 SQL 术语来说,DECLARE 表示所定义对象的目录中将不包含条目。因此,它在定义上是私有的。与之相比,DB2 UDB for zOS® 所支持的已创建的全局临时表(Created Global Temporary Table)是在目录中定义的。当然,虽然它们的内容是私有的,但其定义却不是私有的。

具有声明对象的灵活性(只要用户临时表空间是立即可用的,DBA 就不会再关心该应用程序在做什么)也带来了一个不足:对于要进行编译的语句来说,这个对象必须存在。如果连接失败,或者该表已删除,那么每次重新声明这个表时,都需要重新编译引用 DGTT 的任何语句。

同样,我们通过一个例子来说明:

调优 SQL 过程

当然,上面的代码是无意义的,但其结构很常见,因此,可以用它来说明这个问题。本例中,将频繁调用该过程,而 DGTT 仅在本地使用。因此,为了进行封装,该过程声明 DGTT 位于临时表上,然后,当不再需要这个临时表时,可以删除它。

上一页  1 2 3 4 5 6 7  下一页

Tags:SQL 过程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接