sql >> Database >  >> RDS >> PostgreSQL

Is het beter om een ​​index te maken voordat u een tabel met gegevens vult, of nadat de gegevens op hun plaats zijn?

Het maken van een index na het invoegen van gegevens is een efficiëntere manier (het wordt zelfs vaak aanbevolen om de index te verwijderen vóór batchimport en na de import opnieuw te maken).

Syntetisch voorbeeld (PostgreSQL 9.1, trage ontwikkelingsmachine, één miljoen rijen):

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

Invoegen en vervolgens index maken - ongeveer 12 sec

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

Index maken en vervolgens invoegen - ongeveer 25,5 sec (meer dan twee keer langzamer)



  1. SQL Server BULK INSERT van Linux

  2. Datum gebruiken in een controlebeperking, Oracle

  3. Postgres is de coolste database – Reden #1:Ontwikkelaars zijn er dol op!

  4. Hoe sqlcmd &bcp op Ubuntu te installeren