Tworzenie indeksu po wstawieniu danych jest bardziej efektywnym sposobem (nawet często zaleca się usunięcie indeksu przed importem wsadowym i odtworzenie go po imporcie).
Przykład syntetyczny (PostgreSQL 9.1, wolna maszyna programistyczna, milion wierszy):
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);
CREATE INDEX test1_x ON test1 (x);
Wstaw, a następnie utwórz indeks - około 12 sek
CREATE TABLE test2(id serial, x integer);
CREATE INDEX test2_x ON test2 (x);
INSERT INTO test2(id, x) SELECT x.id, x.id*100 FROM generate_series(1,1000000) AS x(id);
Utwórz indeks, a następnie wstaw - około 25,5 sekundy (ponad dwa razy wolniej)