WEB开发网
开发学院数据库DB2 SQL语句优化DB2应用程序性能 阅读

SQL语句优化DB2应用程序性能

 2008-08-27 16:26:24 来源:WEB开发网   
核心提示: 4、指定OPTIMIZE FOR n ROWS子句当我们希望提取的行数远远小于可能返回的行数时,在SELECT语句中指定OPTIMIZE FOR n ROWS子句,SQL语句优化DB2应用程序性能(5),基于提取n行的假设,OPTIMIZE FOR子句会影响查询的优化,我们还可以使用FOR

4、指定OPTIMIZE FOR n ROWS子句

当我们希望提取的行数远远小于可能返回的行数时,在SELECT语句中指定OPTIMIZE FOR n ROWS子句。基于提取n行的假设,OP

TIMIZE FOR子句会影响查询的优化,同时也决定了通讯缓冲区中行的数目。 

SELECTprojno,projname,repempFROMproject
WHEREdeptno=’D11’OPTIMIZEFOR10ROWS

运用行的分块技术,通过在单一操作中一次性地提取一组行来减轻管理器的负担,这些行存储在缓冲区中,应用程序中的每一个FETCH请求都会从该缓冲区中提取下一行,如果指定OPTIMIZE FOR 10 ROWS,那么,系统会以10行为一组返回给用户。数据库

需要注意的是,OPTIMIZE FOR n ROWS子句既不会限制可以提取的行数,也不会影响提取的结果,但是,该子句会影响应用程序的性能,如果最终提取的行数小于或等于n,该子句会改善性能;否则,如果大于n,性能就会下降。

5、指定FETCH FIRST n ROWS ONLY子句

如果不希望应用程序提取n行以上的记录,我们可以在编程时指定FETCH FIRST n ROWS ONLY子句;反之,如果不指定该子句,结果集中可能就会有很多行(大于n)。注意,该子句不能与FOR UPDATE子句同时使用。

参看下面的例子,程序最多能提取5行。

SELECTprojno,projname,repempFROMproject
WHEREdeptno=’D11’
FETCHFIRST5ROWSONLY

该子句同OPTIMIZE FOR n ROWS子句一样,也决定通讯缓冲区中行的数目;如果同时指定FETCH FIRST n1 ROWS ONLY子句和OPTIMIZE FOR n2 ROWS子句,则取n1和n2二者中的较小值作为通讯缓冲区的大小。

6、指定FOR FETCH ONLY子句

如果不想更新那些由SELECT语句提取的行,我们可以在SELECT语句中指定FOR FETCH ONLY子句,这么做的好处是,处理应用程序提出的查询请求时可以充分利用行的分块技术,进而改善性能;该子句还能改善数据的并发性,因为使用该子句查询的那些行上不再有独占的锁了。除了FOR FETCH ONLY子句,我们还可以使用FOR READ ONLY子句,二者是同义词,功效一致。

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

Tags:SQL 语句 优化

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