• 数据操作的学习


    最近几天加班做了几次大量的数据处理,总结了几个经验,以备下次使用:

    1.  COMMIT的效率
         根据经验,每条INSERT(UPDATE)进行COMMIT和所有INSERT(UPDATE)一起COMMIT,将是没有效率的。需要适当的分块进行COMMIT
    2.  INSERT的效率
      根据试验,如果进行一个大表(10个字段以上)的INSERT大量数据,如果是先一次性INSERT插入主键和其它相同值的字段,然后再用UPDATE来更新其它不同值的字段的做法会比一次直接插入所有值的INSERT快,能节约3/2的时间。
    3.  大量INSERT前表的处理
      如果一次的插入大量的数据(比如几百万),并且原先的表就有大量的数据,请先把表重建,然后导回原来的数据后再进行插入。这样的效率差是比较大的(1000条的数据在没有重建表前时候1.2秒,重建后只需要0.08秒)。并且在重建表后可以先停止索引和触发器,等INSERT完后再打开。
    4.  将多表联合查询的结果进行INSERT的效率
     多表联合查询的数据,如果直接INSERT是最没有效率的,而且容易出错(会提示RBS不足,但我查询了应该够的,这里需要再查查资料)。我的做法是将多表查询的结果分别放入几个临时表(临时表可以这几个字段,需要的主键和必要字段,其它字段可以INSERT后UPDATE),然后分别执行进行同步插入。这种拐弯间接做法反而比直接插入快(原因还要学习研究 =。=#)
    5.  SQLLOAD的INSERT做法
     据经验,如果大的SELECT 然后 INSERT,可以先SELECT 出文本(SPOOL),然后用SQLLOAD来 INSERT,这样效率快很多。(需要进一步研究)
    6.   大量数据挖掘的表分区操作--学习中。。。
    7.  DBMS_RAND.VALUE(low,high)  DBMS_RANDOM.VALUE(LOW,HIGH) ,在SYS用户下,目录是RDBMS,随机取数
    8.  在一个INSERT中设置自动COMMIT的问题。找资料中        

  • 相关阅读:
    shell入门-sed-2替换功能
    shell入门-sed-1
    shell入门-grep-3-egrep
    shell入门-grep2
    shell入门-grep过滤-1
    shell入门-连接符(并且、和、或者)
    shell入门-tr替换字符和split切割大文件
    shell入门-uniq去重复和tee重定向
    class类的相关操作 --| 公有普通方法 | 私有普通方法 | 无参方法 | 有参方法
    类的封装性-- | 成员属性 | 成员方法 | 私有属性 | 私有方法 之间调用
  • 原文地址:https://www.cnblogs.com/enli/p/581643.html
Copyright © 2020-2023  润新知