sql >> Database teknologi >  >> RDS >> PostgreSQL

Er det bedre at oprette et indeks, før du fylder en tabel med data, eller efter at dataene er på plads?

Oprettelse af indeks efter dataindsættelse er mere effektiv måde (det anbefales endda ofte at droppe indeks før batchimport og efter import genskabe det).

Syntetisk eksempel (PostgreSQL 9.1, langsom udviklingsmaskine, en million rækker):

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

Indsæt og opret derefter indeks - 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

Opret indeks og indsæt derefter - ca. 25,5 sek (mere end to gange langsommere)



  1. Kom godt i gang med ProxySQL - MySQL &MariaDB Load Balancing Tutorial

  2. Hvordan påvirker NULL-værdier ydeevnen i en databasesøgning?

  3. Værktøjer til at arbejde med lagrede procedurer i Oracle, i et team?

  4. Sådan løses ORA-29283:ugyldig filoperation