Att skapa index efter infogning av data är ett mer effektivt sätt (det rekommenderas till och med ofta att släppa index före batchimport och efter import återskapa det).
Syntetiskt exempel (PostgreSQL 9.1, långsam utvecklingsmaskin, en miljon rader):
CREATE TABLE test1(id serial, x integer);
INSERT INTO test1(id, x) SELECT x.id, x.id*100 FROM generate_series(1,1000000) AS x(id);
-- Time: 7816.561 ms
CREATE INDEX test1_x ON test1 (x);
-- Time: 4183.614 ms
Infoga och skapa sedan index - ca 12 sek
CREATE TABLE test2(id serial, x integer);
CREATE INDEX test2_x ON test2 (x);
-- Time: 2.315 ms
INSERT INTO test2(id, x) SELECT x.id, x.id*100 FROM generate_series(1,1000000) AS x(id);
-- Time: 25399.460 ms
Skapa index och infoga sedan - cirka 25,5 sek (mer än två gånger långsammare)