前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Oracle】-【索引】先查数据再建索引,还是先建索引再插数据?

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

作者头像
bisal
发布2019-01-29 10:25:18
2.6K0
发布2019-01-29 10:25:18
举报

问题:

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应该如何设置呢?也请高手指教!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年06月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档