回复  hobo_boy(流浪汉(正在学习Ora0i-9i)) :
您的“前者”是指“drop mytable快”+“drop mytable意味着将表结构和表数据一块删除”+“[建表-处理-删表]效率高” 呢? 还是指“delete from mytable快”+“只删除表结构而表数据永远成为数据库中的垃圾”+“[插入-处理-清空]效率高”呢?

解决方案 »

  1.   

    你为什么不用oracle提供的临时表呢
      

  2.   

    回复  dtzfl(蓝猫儿) :兄台真是一针见血,苦于我不会用oracle提供的临时表啊。我的应用要求临时表与最终表有近似的表结构,不知道oracle提供的临时表能否满足我的要求呢?兄台可否给个应用oracle提供的临时表的语句例子。谢了。
      

  3.   

    创建临时表
    CREATE GLOBAL TEMPORARY TABLE test
            (col1 DATE,
             col2 number,
             col3 CHAR(20))
          ON COMMIT DELETE ROWS;
      

  4.   

    回复  LGQDUCKY(飘):请问该临时表的生命周期?何时创建?何时销毁?这些都是有开发人员自己用代码控制吗?控制语句怎么写呢?
      

  5.   

    DELETE ROWS Specify DELETE ROWS for a transaction-specific temporary table
    (this is the default). Oracle will truncate the table (delete all its rows) after each
    commit.
    PRESERVE ROWS Specify PRESERVE ROWS for a session-specific temporary table.
    Oracle will truncate the table (delete all its rows) when you terminate the session.
      

  6.   

    用truncate table 吧,它比drop table和delete table 要快得多。
      

  7.   

    delete from mytable
    是会写日志的,你删一条写一条,你有10000000条,要慢死。建议使用drop 或truncate 截断
      

  8.   

    update 也要写日志吧?能给出一个用truncate 截断的例子改造下列语句:
    delete from mytable where a='123';
      

  9.   

    不写日志
    CREATE TABLE aa NOLOGGING;