La création d'un index après l'insertion de données est un moyen plus efficace (il est même souvent recommandé de supprimer l'index avant l'importation par lots et de le recréer après l'importation).
Exemple de syntaxe (PostgreSQL 9.1, machine de développement lent, un million de lignes):
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);
Insérer puis créer un index - environ 12 sec
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);
Créez un index, puis insérez-le - environ 25,5 secondes (plus de deux fois plus lentement)