ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 批量插入数据

批量插入数据

原创 Linux操作系统 作者:qgw521 时间:2008-10-09 13:11:56 0 删除 编辑

今天批插入10000万多行数据到一张表都要40.332s,简直让人无法接受。我试着新建一张表今天批插入竟然只需要0.109s,我初步确定应该是原表索引太多的原因,看了一下原表的索引,有10个索引。那么可不可以暂时使索引失效,等插入数据后再恢复呢?

上网查了相关资料,有说到alter index indexname unusable(使索引失效),alter index indexname rebuild(重建),还有人说到先drop掉index,建create index,突然我又想到速度慢跟trigger应该也有关系吧,于是我想先试下使这张表的所有trigger失效,alter table name disable all triggers,然后进行批量插入,果然快了很多,2.047s.但比起0.0109s还是差了很远,我又想试下使所有索引失效是什么效果,谁知使这张表所有索引失效后竟然插入数据有报错,ora-01502 index 'dbown.blpckdtl$idx1 or partition of such index is in unusable stats,上网查了ora-01502这个错误的解决方法,竟然是要rebuild索引,这说明这种方法是行不通的了,只有rebuild 索引使这张表插入正常,谁知reduild一个索引都要很长时间,这说明就算索引暂时失效可以插入数据很快,但时间也消耗在重建索引上了,不过drop索引应该会行,但是考虑到drop索引但create 索引再统计,时间如果长的话有可能影响查询,也就罢了,以后再研究了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13387766/viewspace-468508/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-06

  • 博文量
    128
  • 访问量
    304330