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

PostgreSQL Opret indeks

PostgreSQL-indekser fremskynder SQL-forespørgsler ved at fremskynde opslag, filtre og joinforbindelser. Sådan opretter du indeks i PostgreSQL for at fremskynde databaseforespørgsler ved hjælp af PostgreSQL CREATE INDEX-sætning.

Sådan opretter du indeks i PostgreSQL

Her er trinene til at oprette indeks i PostgreSQL ved hjælp af PostgreSQL CREATE INDEX-sætning. Lad os sige, at du har følgende tabel

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

Sådan tilføjer du indeks til kolonne i tabel

Lad os sige, at du vil tilføje indeks for kolonne eller sæt af kolonner, og brug derefter CREATE INDEX-sætning. Her er syntaksen for CREATE INDEX-sætningen

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

I ovenstående forespørgsel angiver vi indeksnavnet efter CREATE INDEX, den tabel, som du skal oprette indeks for, og en liste over kolonner, der skal inkluderes i indeksering.

Du kan valgfrit angive UNIQUE søgeord for at sikre, at dit indeks kun indeholder unikke værdier

PostgreSQL understøtter forskellige indekseringsmetoder såsom btree , hash , gist , spgist , gin og brin som du kan angive under oprettelse af indeks.

Som standard bruger PostgreSQL btree-indekser.

Her er et eksempel på at tilføje nyt indeks for kolonne produktnavn i ovenstående ordrer bord

CREATE INDEX prod_id_index ON orders (product_id);

Sådan opretter du indeks ved hjælp af flere kolonner

CREATE INDEX prod_id_index ON orders (product_id, order_id);

Sådan opretter du indeks ved hjælp af hash-metoden

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

Sådan opretter du et unikt indeks for at undgå duplikerede værdier

CREATE UNIQUE INDEX prod_id_index ON orders (product_id);

PostgreSQL giver dig også mulighed for at oprette delvist indeks ved hjælp af WHERE-sætning, hvor kun matchende værdier indekseres

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

I ovenstående forespørgsel er kun de prod_id er indekseret hvor status=1

Forhåbentlig vil ovenstående artikel hjælpe dig med at oprette indeks i PostgreSQL

Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. Indsæt flere poster i oracle

  2. Udviklerværktøjer til direkte adgang til databaser

  3. Sådan aktiveres INNODB i mysql

  4. Langsom bulk indsats til bord med mange indekser