【Oracle】-【索引】先查数据再建索引,还是先建索引再插数据
【Oracle】-【索引】先查数据再建索引,还是先建索引再插数据问题:1、新建一个表结构,创建索引,将百万或千万级的数据使用insert导入该表。2、新建一个表结构,将百万或千万级的数据使用isnert导入该表,再创建索引。这两种效率哪个高呢?或者说用时短呢?我感觉无论先建还是后建索引,当有数据时都需要update索引数据,问题是有索引的情况下插数据与有数据的情况下建立索引,各自的消耗。实验:100w记录,1、先创建表和索引,再插入数据,大约1.3min。2、先插数据,再建立两个索引,create table xxx as select * from t where 1<>1;大约13秒,建立两个索引大约26秒和35秒。总结:如果先建立索引再插入数据,每次插入数据还需要修改索引信息。实战还要看业务要求,有的业务可能还需要索引和约束对数据进行校验,这样就应该先建立索引了。如果是一次性处理,原则上先插数据后建索引。