sql >> Databáze >  >> RDS >> PostgreSQL

Je lepší vytvořit index před naplněním tabulky daty, nebo poté, co jsou data na svém místě?

Vytváření indexu po vložení dat je efektivnější způsob (dokonce se často doporučuje index před dávkovým importem vypustit a po importu jej znovu vytvořit).

Syntetický příklad (PostgreSQL 9.1, pomalý vývojový stroj, jeden milion řádků):

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

Vložte a poté vytvořte index - asi 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

Vytvořte index a poté vložte - asi 25,5 s (více než dvakrát pomaleji)



  1. Návrh databáze pro vícejazyčné aplikace

  2. 11 způsobů, jak získat primární klíč v SQL Server (příklady T-SQL)

  3. SQL dotaz „LIKE“ s použitím „%“, kde vyhledávací kritéria obsahují „%“

  4. MySQL COUNT() – Získá počet řádků, které má dotaz vrátit