中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
Oracle客户端编程
作者:佚名 时间:2004-07-09 10:40 出处:互连网 责编:chinaitpower
              摘要:Oracle客户端编程

  一、绑定变量
  使用绑定变量可以减少Oracle对语句的硬分析,加快语句的执行。
  
  样例程序:VB
  
  没有使用绑定变量执行1000次 Insert 命令耗时 8.36 秒
  使用绑定变量执行1000次 Insert 命令耗时 2.56 秒
  使用绑定变量的速度为不使用绑定变量的 30%,如果在大量用户集中执行此命令的情况下,效果更加明显。
  
  为什么使用绑定变量可以加快数据?
  1、减少了Oracle对语句的分析。Oracle可以在缓存中直接使用上次已分析过的语句。
  2、不需要对语句执行查询路径分析。直接使用上次的查询路径。
  
  开发中注意事项:
  1、编码变得烦琐,但为了以后没有人找你麻烦,还是烦琐一些好!
  2、RDO 使用 rdoQuery 对象,ADO使用 Command 对象。Java 使用 PreparedStatement。各种开发语言均有此类对象。
  
  二、正确使用索引
   语句 执行时间
  错误 SELECT *
   FROM xxy x
   WHERE x.编号=1000000019 1.515秒
  错误 SELECT *
   FROM xxy x
   WHERE upper(X.编号)='1000000019' 1.64秒
  正确 SELECT *
   FROM xxy x
   WHERE x.编号='1000000019' 0.062秒
  正确的语句与错误语句有何不同之处?
  
  此例说明Oracle的隐式转换数据功能可能误导开发员,使开发员写出蹩脚的SQL语句。
  
  开发中注意事项:
  1、 正确使用索引字段,并要注意查询语句中的关键字类型与数据库中索引字段的字段类型一致。
  2、 不要在索引上使用函数。
  3、 尽可能不使用Like、Is Null语句,而使用 >、< 代替。
  
  三、 FROM语句
  语句执行时间
  错误 SELECT *
   FROM d_fs fs,djb dj,xxyb xxy
   WHERE dj.方式=fs.方式
    AND fs.类型='什么类型'
    AND dj.编号=xxy.编号 24.844秒
  正确 SELECT *
   FROM djb dj,xxyb xxy,d_fs fs
   WHERE dj.方式=fs.方式
    AND fs.类型='什么类型'
    AND dj.编号=xxy.编号 4.453秒
  
  Oracle的优化方式分为基于成本和基于规则的优化方式。
  在使用基于规则的优化方案的时候,应将记录数小的表写在FROM语句的后面。
  
  四、 EXISTS、NOT EXISTS
  尽量不使用 In、Not In,而使用 Exists、Not Exists代替。
   语句 执行时间
  错误 SELECT *
   FROM cfxb xd
   WHERE xd.日期 BETWEEN SYSDATE-30 AND SYSDATE
    AND xd.编号 NOT IN (SELECT zb.编号
    FROM cfzb zb) 3.281秒
  正确 SELECT *
   FROM cfxxb xd
   WHERE xd.日期 BETWEEN SYSDATE-30 AND SYSDATE
    AND NOT EXISTS (SELECT 1
    FROM cfzb zb
    WHERE zb.编号=xd.编号) 0.172秒
  
  刚开始使用Exists语句不如In语句直观,大家习惯一下就可以了。
  
  五、 其它事项
  a) 在select、insert语句中不允许使用 * 代替所有字段,应明确指定字段名称。
  b) SQL语句中使用到多个表,应在select语句中明确使用表别名引用表中的字段。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有