大家好,如题,因为优化需求的原因,目前需要处理的历史数据有500万左右,现在我需要在一张新表中生成500万的数据,但是存储过程处理时由于关联比较复杂,在投产的时候要执行完这段程序测试了下需要近10个小时,而这个时间客户接受不了,我自己也接受不了。所以我想在其它环境先生成这500万数据,在投产的时候直接将这500导进去。
可是目前发现导进去的速度一样慢,我这样做的,在测试环境将生产投产时应该生成的数据插进这个新表中,数据约500万,执行完后将测试环境的这个表及其数据全导出来,然后投产的时候直接导进去。我测试的时候 导出的是sql脚本,然后我在其它环境测试导入的时候发现还是一样慢,怎么回事呢?直接导入的话应该很快的呀?难道我的导入方式不对?
我应该怎么做呢?大家有没有更好的办法?投产时间太长啦,谁也不可能守着,而且生产环境不能停这么久,顶多给我一个小时
可是目前发现导进去的速度一样慢,我这样做的,在测试环境将生产投产时应该生成的数据插进这个新表中,数据约500万,执行完后将测试环境的这个表及其数据全导出来,然后投产的时候直接导进去。我测试的时候 导出的是sql脚本,然后我在其它环境测试导入的时候发现还是一样慢,怎么回事呢?直接导入的话应该很快的呀?难道我的导入方式不对?
我应该怎么做呢?大家有没有更好的办法?投产时间太长啦,谁也不可能守着,而且生产环境不能停这么久,顶多给我一个小时
解决方案 »
- Oracle中Case的使用
- Oracle10g如何查看是否打了某个补丁?
- ORA-00600: internal error code, arguments: [KGHALP1], [0x0], [], [], [], [], [], []错误
- 关于触发器相关的选项和参数的问题?
- 请问是该语句是否真的执行了?
- 删除联机日志,不能正常启动了?
- 求助动态 游标操作
- 奇怪的SQL语句问题!紧急求助!
- 【help】怎样能取得数据库里当前最大的id号?怎样取得一段时间内新加入的数据?
- 为什么oracle静默安装建库之后,生成的tnsname.ora 文件service_name参数值用的是GDBNAME而不是SID?
- ORACLE 两个表列的合并!解决立马给分
- 取数据库数据的问题
触发器一定要禁了
主键索引到问题不大,其他索引最好也删除,导完重建。还不行的话(肯定机器太差),你可以先导到另外的表名里,库里再转一次,时间总够啦!
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
但是让我疑问的是你用 用exp,imp来导出导入的脚本贴出来 是不是字段特别多,如果脚本全是insert语句的话,在加上你的字段也特别多,500万数据那肯定也相当慢。建议你用sqlldr命令去导入,或者直接导入表数据。那样速度会很快。