科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle客户端编程

Oracle客户端编程

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  一、绑定变量   使用绑定变量可以减少Oracle对语句的硬分析,加快语句的执行。

作者:中国IT实验室 来源:中国IT实验室 2007年10月5日

关键字: 开发 数据库 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语句中明确使用表别名引用表中的字段。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章