数据库中有一个外部表(EXT),包含了很多个列,需要将其中的一部分列的内容插入到一个内部表(TABLE)中,外部表数据总共有2万多条,列数200多条,需要提取的列数为20多条,
创建一个存储过程,核心的SQL语句是:insert into TABLE_NAME (需要的列名) select (需要的列名)from EXT_NAME
结果一执行就是100+分钟,速度太慢。
而后采用新的办法,创建一个表结构和外部表一模一样的内部表(TABLE_TMP),然后先将外部表(EXT)的数据插入TABLE_TMP中,
创建关键列的索引:create index index_name from TABLE_TMP(关键列名);
再insert into;执行速度好像是几十秒吧,第一次发现速度可以差这么多!
有用的SQL语句、关键字记录:
truncate table TABLE_NAME:清空表中数据,不产生日志(?),速度快!
nologging,不产生日志的关键字,不过使用条件貌似有点多。