Създаването на индекс след вмъкване на данни е по-ефективен начин (дори често се препоръчва да махнете индекс преди пакетно импортиране и след импорта да го създадете отново).
Синтетичен пример (PostgreSQL 9.1, машина за бавна разработка, един милион реда):
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
Вмъкнете и след това създайте индекс - около 12 сек
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
Създайте индекс и след това вмъкнете - около 25,5 секунди (повече от два пъти по-бавно)