PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy lepiej jest utworzyć indeks przed wypełnieniem tabeli danymi, czy po umieszczeniu danych?

Tworzenie indeksu po wstawieniu danych jest bardziej efektywnym sposobem (często zaleca się nawet porzucenie indeksu przed importem wsadowym i ponowne jego utworzenie po imporcie).

Przykład syntetyczny (PostgreSQL 9.1, wolno rozwijająca się maszyna, milion wierszy):

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

Wstaw, a następnie utwórz indeks - około 12 sekund

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

Utwórz indeks, a następnie wstaw - około 25,5 s (ponad dwa razy wolniej)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prosta instrukcja Postgresql - nazwa kolumny nie istnieje

  2. Odejmij minuty od wartości czasu w PostgreSQL

  3. 2 sposoby zwracania wierszy zawierających znaki niealfanumeryczne w PostgreSQL

  4. Postępy w aktualizacji online

  5. Uruchom plik wsadowy za pomocą polecenia psql bez hasła