您现在的位置:主页 > 技术中心 > 数据库技术

优化你的PowerBuilder程序

来源:不详 责任编辑:admin 发表时间:2013-07-01 10:01 点击:
一段程序,完成所需要的功能固然重要,但是提高执行效率,提高代码的可重复利用性,提高程序的可读性也是很重要的。刚刚读了一个前辈的帖子,感觉受益匪浅,拿出来与大家共享。

  优化你的PowerBuilder程序

  一、处理 SQL 语句

  1、缓冲 SQL 语句
  在应用程序中,有时需要反复调用同一组SQL语句,在这种情况下,可以通过在应用中为这些 SQL建立缓冲区来提高执行性能。在缺省情况下,SQL语句的缓冲区是关闭的,你可以通过如下语句打开它:
  SQLCACHE = n
  n 表示装入缓冲区的 SQL 语句数量(缺省为0)。

  例如:
  dw_1.SetTransObject(sqlca)
  SQLCA.dbParm = "SQLCache = 0"
  dw_1.retrieve()

  如果将上例的 "SQLCache = 0" 改为 "SQLCache = 25",此句的执行效率将提高五分之一左右。但应注意缓冲区的大小,否则也将影响程序执行的性能。

  注:此方法对用 ODBC 和 ORACLE 连接的数据库非常有效。

  2、捆绑变量

  请看下例:

  SQLCA.DBPARM = "DISABLEBIND=1"
  INSERT INTO DA_DH VALUES("1","河南0")
  INSERT INTO DA_DH VALUES("2","河南1")
  INSERT INTO DA_DH VALUES("3","河南2")
  INSERT INTO DA_DH VALUES("4","河南3")
  INSERT INTO DA_DH VALUES("5","河南4")
  INSERT INTO DA_DH VALUES("6","河南5")

  这里未使用捆绑变量,再插入时 PB 将重新处理每个带有新值的SQL语句。

  如果将上例改为:

  SQLCA.DBPARM = "DISABLEBIND=0"
  INSERT INTO DA_DH VALUES("1","河南0")
  INSERT INTO DA_DH VALUES("2","河南1")
  INSERT INTO DA_DH VALUES("3","河南2")
  INSERT INTO DA_DH VALUES("4","河南3")
  INSERT INTO DA_DH VALUES("5","河南4")
  INSERT INTO DA_DH VALUES("6","河南5")

  则系统将把 INSERT 语句按如下格式进行处理:
  INSERT INTO DA_DH VALUES(?,?)
  其中 "?" 称为占位符。系统性能将有所增强。

  3、用数据窗口代替 SQL 语句

  通常,为了获得某些数据,采用数据窗口和 SQL 语句都是可行的,但是PB 对数据窗口和 SQL 语句采用不同的处理机制,因此,具有不同的效率。

  例:为里检索电话档案中的用户名,可以利用 SQL 语句,将所有的数据检索到一个多行编辑中,也可以检索到一个数据窗口中。

  如果使用第一种方法:

  首先定义一个游标:
    DECLARE CUR CURSOR FOR
    SELECT "DA_DH"."HM"
    FROM "DA_DH";

  然后可以:
    STRING stxt[],st
    int li
    open cur
    do li = li + 1
    fetch cur
    into :stxt[li] ;
    st=st+stxt[li] + "~r~n"
    loop while stxt[li]<>""
    close cur;
    mle_1.txt = st

  也可以使用第二种方法:

  dw_1.settransobject(sqlca)
  dw_1.retrieve()

  利用 POWERBUILDER PROFILER 工具进行检查,对比两种方法所需时间如下

  方法     所需时间 (百分之一秒)
  SQL 语句   100.9857
  数据窗口   49.0133

  由于数据窗口或DATASTORE使用了标准的内嵌代码,而不是由开发人员进行全部编码,同时编译执行的速度比解释执行的速度快的多,因此在开发过程中应尽量使用数据窗口和DATASTORE.即使是必须用SQL语句的时候,也应该尽量将它们定义为存储过程(特别是在多用户的环境中),以提高应用程序的性能. 

  二、数据窗口的编程和执行

  数据窗口是PB最值得被称道的, 其具有如下特点:
  1. 多种显示方式.
  2. 多种编辑方式.
  3. 使用方法简单.
  4. 具有多种报表形式.
  5. 可实现屏幕滚动.
  6. 可实现数据的有效性校验.
  7. 执行性能显著提高.
  8. 编程工作变少.
  9. 可以在数据窗口内部实现数据哭的更新.

  下面, 我将介绍一些用于提高数据窗口性能的技术.

  1. 减少连接数据库的次数

  连库操作是非常影响执行速度的操作. 因此在程序中,一旦与数据库连接后就应当尽量保持与数据库的连接, 减少连接数据库的次数.PowerBuilder

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    用户名: 验证码:点击我更换图片

    推荐热点

    • SQL注入攻击及其防范检测技术研究
    • Sql-Server应用程序的高级Sql注入
    • 学生信息管理系统数据库原理课程设计报告
    • 经验总结:登录和优化IBM DB2的执行速度
    • MySQL服务器的启动与停止
    • 浅谈数据库的接口技术
    • 学习数据库知识之 SQL 操作标记
    • 如何在SQL Server和MySql中创建临时表
    • 有关Sybase系统的数据同步与复制问题
    ?? - ?? - ÝřŝžľŘÝź - TAGąęÇŠ - RSSśŠÔÄ - ??
    Copyright © 2004-2024 上海卓卓网络科技有限公司