sql >> Databasteknik >  >> RDS >> PostgreSQL

Är det bättre att skapa ett index innan du fyller en tabell med data, eller efter att data är på plats?

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)



  1. Postgresql generera_serie av månader

  2. Exekveringssekvens för Group By, Have and Where-klausul i SQL Server?

  3. Hur man ändrar storlek på formulärkontroller i Access 2016

  4. WinRT System.Data - Anslut till SQL