sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-index maken

PostgreSQL-indexen versnellen SQL-query's door zoekacties, filters en joins te versnellen. Hier leest u hoe u een index in PostgreSQL maakt om databasequery's te versnellen, met behulp van de PostgreSQL CREATE INDEX-instructie.

Hoe maak je een index in PostgreSQL

Hier zijn de stappen om een ​​index te maken in PostgreSQL met behulp van de PostgreSQL CREATE INDEX-instructie. Stel dat u de volgende tabel heeft

CREATE TABLE orders(
   order_id INT PRIMARY KEY,
   product_id INT NOT NULL,
   sale INT NOT NULL,
   product_name VARCHAR(10)
);

Index toevoegen aan kolom in tabel

Stel dat u een index voor een kolom of reeks kolommen wilt toevoegen en gebruik vervolgens de instructie CREATE INDEX. Hier is de syntaxis van de CREATE INDEX-instructie

CREATE [UNIQUE] INDEX [CONCURRENTLY] index_name ON table_name 
[USING METHOD](column_list)

In de bovenstaande query specificeren we de indexnaam na CREATE INDEX, de tabel waarvoor u een index moet maken en een lijst met kolommen die moeten worden opgenomen in indexering.

U kunt optioneel het trefwoord UNIQUE opgeven om ervoor te zorgen dat uw index alleen unieke waarden bevat

PostgreSQL ondersteunt verschillende indexeringsmethoden zoals btree , hash , gist , spgist , gin , en brin die u kunt opgeven tijdens het maken van een index.

Standaard gebruikt PostgreSQL btree-indexen.

Hier is een voorbeeld om een ​​nieuwe index toe te voegen voor kolom product_name in de bovenstaande bestellingen tafel

CREATE INDEX prod_id_index ON orders (product_id);

Hier leest u hoe u een index maakt met meerdere kolommen

CREATE INDEX prod_id_index ON orders (product_id, order_id);

Hier leest u hoe u een index maakt met behulp van de hash-methode

CREATE INDEX prod_id_index ON orders using hash(product_id, order_id);

Hier leest u hoe u een unieke index maakt om dubbele waarden te voorkomen

CREATE UNIQUE INDEX prod_id_index ON orders (product_id);

Met PostgreSQL kunt u ook een gedeeltelijke index maken met behulp van de WHERE-clausule, waarbij alleen overeenkomende waarden worden geïndexeerd

CREATE INDEX prod_id_index ON orders (product_id) where status=1;

In de bovenstaande zoekopdracht, alleen die prod_id worden geïndexeerd waar status=1

Hopelijk helpt het bovenstaande artikel u bij het maken van een index in PostgreSQL

Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. Schrijven naar specifieke schema's met RPostgreSQL

  2. ORA-00984:kolom hier niet toegestaan

  3. Het sneeuwvlokschema

  4. Geavanceerde failover met behulp van post/pre-script hooks