欢迎来到天天文库
浏览记录
ID:39468419
大小:54.50 KB
页数:15页
时间:2019-07-04
《sql与PB程序的优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、微软用户第15页2021/7/20赢sql与PB程序的优化2009-01-1309:09748人阅读评论(0)收藏举报下面内容从CSDN的一篇贴子中找到的。我用过的一个优化方法是:当检索表和视图混合的查询时,若需要检索参数,且表与视图均可用于检索参数的话,应使用视图作检索条件,速度将有明显提升。另附两篇关于pb代码优化的网摘:优化你的sql和dw 一、处理SQL语句 1、缓冲SQL语句 在应用程序中,有时需要反复调用同一组SQL语句,在这种情况下,可以通过在应用中为这些SQL建立缓冲区来提高执行性能。在缺省情
2、况下,SQL语句的缓冲区是关闭的,你可以通过如下语句打开它: SQLCACHE=n n表示装入缓冲区的SQL语句数量(缺省为0)。 例如: dw_1.SetTransObject(sqlca) SQLCA.dbParm="SQLCache=0" dw_1.retrieve() 如果将上例的"SQLCache=0"改为"SQLCache=25",此句的执行效率将提高五分之一左右。但应注意缓冲区的大小,否则也将影响程序执行的性能。 注:此方法对用ODBC和ORACLE连接的数据库非常有效。 2、捆绑变
3、量 请看下例: SQLCA.DBPARM="DISABLEBIND=1" INSERTINTODA_DHVALUES("1","河南0") INSERTINTODA_DHVALUES("2","河南1") INSERTINTODA_DHVALUES("3","河南2") INSERTINTODA_DHVALUES("4","河南3") INSERTINTODA_DHVALUES("5","河南4") INSERTINTODA_DHVALUES("6","河南5")微软用户第15页2021/7/20
4、 这里未使用捆绑变量,再插入时PB将重新处理每个带有新值的SQL语句。 如果将上例改为: SQLCA.DBPARM="DISABLEBIND=0" INSERTINTODA_DHVALUES("1","河南0") INSERTINTODA_DHVALUES("2","河南1") INSERTINTODA_DHVALUES("3","河南2") INSERTINTODA_DHVALUES("4","河南3") INSERTINTODA_DHVALUES("5","河南4") INSERTINTODA_
5、DHVALUES("6","河南5") 则系统将把INSERT语句按如下格式进行处理: INSERTINTODA_DHVALUES(?,?) 其中"?"称为占位符。系统性能将有所增强。 3、用数据窗口代替SQL语句 通常,为了获得某些数据,采用数据窗口和SQL语句都是可行的,但是PB对数据窗口和SQL语句采用不同的处理机制,因此,具有不同的效率。 例:为里检索电话档案中的用户名,可以利用SQL语句,将所有的数据检索到一个多行编辑中,也可以检索到一个数据窗口中。 如果使用第一种方法: 首先定义一个游标
6、: DECLARECURCURSORFOR SELECT"DA_DH"."HM" FROM"DA_DH"; 然后可以: STRINGstxt[],st intli opencur doli=li+1 fetchcur into:stxt[li]; st=st+stxt[li]+"~r~n" loopwhilestxt[li]<>"" closecur; mle_1.txt=st 也可以使用第二种方法:微软用户第15页2021/7/20
7、 dw_1.settransobject(sqlca) dw_1.retrieve() 利用POWERBUILDERPROFILER工具进行检查,对比两种方法所需时间如下 方法 所需时间(百分之一秒) SQL语句 100.9857 数据窗口 49.0133 由于数据窗口或DATASTORE使用了标准的内嵌代码,而不是由开发人员进行全部编码,同时编译执行的速度比解释执行的速度快的多,因此在开发过程中应尽量使用数据窗口和DATASTORE.即使是必须用SQL语句的时候,也应该尽量将它们定义为存储
8、过程(特别是在多用户的环境中),以提高应用程序的性能. 二、数据窗口的编程和执行 数据窗口是PB最值得被称道的,其具有如下特点: 1.多种显示方式. 2.多种编辑方式. 3.使用方法简单. 4.具有多种报表形式. 5.可实现屏幕滚动. 6.可实现数据的有效性校验. 7.执行性能显著提高. 8.编程工作变少. 9.可以在数据窗口内部实现
此文档下载收益归作者所有