有个说法:"UPDATE   表名   NOLOGGING   SET   ...   。。"
        像这样加了NOLOGGING的话,如果涉及数据量很多,且更新字段不是索引列的话,
       会快很多,因为只产生少量日志。
可又有人说,"上面这个说法是错的,NOLOGGING不会使update快"我就纳闷了,到底NOLOGGING会不会使update快?为什么??

解决方案 »

  1.   

    当然不会了。你去看看,nologging只在几种特定操作下才有效,还跟归档模式有关。
    对update而言,nologging是无效的。
      

  2.   

    这个最好不要用“应该”、“可能”之类的猜测词语,以免误导新人。
    oracle官方文档上针对nologging的使用场合讲得很详细。
      

  3.   


    默认情况下,表都是log的, 这样对表的操作都会写入redo log。 也就会为数据的恢复提供了可能性。 但是如果当我们对表进行大量的更新操作的时候,比如往表里插入1000w的数据,这时候就会涉及到2个问题:
    1. 写数据
    2. 写日志
    为了提高插入的速度,我们可以对表关闭写log功能。 SQL 如下:
    sql> alter   table   table_name   NOLOGGING; 然后插入数据:
    INSERT   /*+Append*/   INTO     tab1     SELECT   *   FROM   tab2;插入完数据后,再修改表写日志: 
    sql> alter   table   table_name   LOGGING; 这样在插入的时候只有写数据,没有写log, 速度会块很多,但是也增加了风险,如果出现问题就不能恢复。 
    所以具体情况,具体对待..------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716
      

  4.   

    在10.2版的归档模式测试了一下 update table nologging...
    使用nologging比未使用减少了1%的日志
    使用nologging比未使用时间减少14.4%初步结论:在非归档模式下,update是否使用nologging没有效果。
              在归档模式下,update是否使用nologging对提高速度有较明显的效果。不知对不对,请高人参与讨论。
      

  5.   

    归档和非归档的区别就在与是否对redo log 进行归档,如果采用归档模式,对redo log 的归档就需要时间,如果非归档,当redo log 满了之后就直接覆盖..
    ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716