ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【Oracle】-【索引】先查数据再建索引,还是先建索引再插数据?

【Oracle】-【索引】先查数据再建索引,还是先建索引再插数据?

原创 Linux操作系统 作者:bisal 时间:2013-07-26 10:05:23 0 删除 编辑

问题:

1、新建一个表结构,创建索引,将百万或千万级的数据使用insert导入该表。
2、新建一个表结构,将百万或千万级的数据使用isnert导入该表,再创建索引。

这两种效率哪个高呢?或者说用时短呢?
我感觉无论先建还是后建索引,当有数据时都需要update索引数据,问题是有索引的情况下插数据与有数据的情况下建立索引,各自的消耗。


实验:

100w记录,

1、先创建表和索引,再插入数据,大约1.3min。
2、先插数据,再建立两个索引,create table xxx as select * from t where 1<>1;大约13秒,建立两个索引大约26秒和35秒。


总结:

如果先建立索引再插入数据,每次插入数据还需要修改索引信息。

实战还要看业务要求,有的业务可能还需要索引和约束对数据进行校验,这样就应该先建立索引了。如果是一次性处理,原则上先插数据后建索引。


另外的问题:

使用nologging可以提高几秒钟,但使用parallel没变化,环境是虚机,4个物理CPU,8个虚拟CPU,这里parallel应该如何设置呢?也请高手指教!

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

请登录后发表评论 登录
全部评论
Oracle ACE,10g/11g OCP,11g OCM,国内首批Oracle YEP成员(Oracle Young Expert Program,Oracle用户组年轻专家项目),EXIN DevOps Master,Oracle爱好者,微信公众号:bisal的个人杂货铺

注册时间:2013-07-26

  • 博文量
    340
  • 访问量
    2622689