网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 性能调优 > Oracle更新操作优化-性能调优  

Oracle更新操作优化-性能调优

2008-03-01  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

   

       SQL> DECLARE
  2 TYPE T_ID IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  3 TYPE T_TYPE IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  4 V_ID T_ID;
  5 V_TYPE T_TYPE;
  6 BEGIN
  7
  8 SELECT T.ID, DECODE(T1.ID, NULL, 0, 1) TYPE
  9 BULK COLLECT INTO V_ID, V_TYPE
  10 FROM T,
  11 (
  12 SELECT T1.ID
  13 FROM T1@YTK102 T1, T2@YTK102 T2, T3@YTK102 T3
  14 WHERE T1.ID = T2.ID
  15 AND T2.ID = T3.ID
  16 ) T1
  17 WHERE T.ID = T1.ID(+)
网管联盟bitsCN@com

  18 AND T.TYPE != DECODE(T1.ID, NULL, 0, 1)
  19 ;
  20
  21 FORALL I IN 1..V_ID.COUNT
  22 UPDATE T SET TYPE = V_TYPE(I) WHERE ID = V_ID(I);
  23
  24 END;
  25 /

    
    PL/SQL 过程已成功完成。 网管有家www.bitscn.net

  已用时间: 00: 00: 00.35

中国网管论坛bbs.bitsCN.com

  SQL> ROLLBACK;

网管bitscn_com

  回退已完成。

网管有家bitscn.net

  已用时间: 00: 00: 00.12

网管有家www.bitscn.net

  通过运用PL/SQL减少远端对象的访问次数和批量操作的运用,整个过程的执行时间已经从原来的50多秒优化到了0.35秒,如果这时候检查执行计划可以发现,由于是对本地的更新,Oracle选择当前站点作为驱动站点,且对远端三个表的查询采用了NESTED LOOP,如果使用HINT来规定驱动站点和HASH JOIN连接方式,还是获得一定的性能提升: 网管论坛bbs_bitsCN_com

     网管论坛bbs_bitsCN_com

       SQL> DECLARE
  2 TYPE T_ID IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  3 TYPE T_TYPE IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  4 V_ID T_ID;
  5 V_TYPE T_TYPE;
  6 BEGIN
  7
  8 SELECT T.ID, DECODE(T1.ID, NULL, 0, 1) TYPE
  9 BULK COLLECT INTO V_ID, V_TYPE
  10 FROM T,
  11 (
  12 SELECT /*+ DRIVING_SITE(T1) USE_HASH(T1 T2) USE_HASH(T3) */ T1.ID
  13 FROM T1@YTK102 T1, T2@YTK102 T2, T3@YTK102 T3
  14 WHERE T1.ID = T2.ID
  15 AND T2.ID = T3.ID

网管论坛bbs_bitsCN_com


  16 ) T1
  17 WHERE T.ID = T1.ID(+)
  18 AND T.TYPE != DECODE(T1.ID, NULL, 0, 1)
  19 ;
  20
  21 FORALL I IN 1..V_ID.COUNT
  22 UPDATE T SET TYPE = V_TYPE(I) WHERE ID = V_ID(I);
  23
  24 END;
  25 /
网管bitscn_com

     PL/SQL 过程已成功完成。
  

网管联盟bitsCN_com

网管bitscn_com

TAGs   性能   优化   操作   更新       SQL>   WHERE    T1.ID      
 上一篇:提高ORACLE数据库的查询统计速度-性能调优   下一篇:讲解一个标准规则的集合──DB2优化器-性能调优
Oracle更新操作优化-性能调优 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: