Hvordan lage indekser i PostgreSQL

Hvordan lage indekser i PostgreSQL

Indekser er spesialiserte søketabeller som brukes av Databank Hunt -motorer for å akselerere spørringsresultater. En indeks er en referanse til informasjonen i en tabell. For eksempel, hvis navnene i en kontaktbok ikke er alfabetisert, må du gå ned hver rad og søke gjennom hvert navn før du når det spesifikke telefonnummeret du søker etter. En indeks fremskynder de utvalgte kommandoene og hvor fraser, utfører dataoppføring i oppdateringen og setter inn kommandoer. Uansett om indekser settes inn eller slettet, er det ingen innvirkning på informasjonen i tabellen. Indekser kan være spesielle på samme måte som den unike begrensningen hjelper til med å unngå replika -poster i feltet eller settet med felt som indeksen eksisterer.

Generell syntaks

Følgende generelle syntaks brukes til å lage indekser.

>> Opprett indeksindeks_navn på tabell_navn (kolonne_navn);

For å begynne å jobbe med indekser, åpner du PGADMIN av PostgreSQL fra applikasjonslinjen. Du finner alternativet 'servere' som vises nedenfor. Høyreklikk på dette alternativet og koble det til databasen.

Som du ser er databasen 'Test' oppført i alternativet 'Databaser'. Hvis du ikke har en, høyreklikk 'databaser, "Naviger til" Opprett "-alternativet, og navngi databasen i henhold til dine preferanser.

Utvid alternativet 'skjemaer', så finner du alternativet 'tabeller' som er oppført der. Hvis du ikke har en, høyreklikker du på den, navigerer til 'Opprett' og klikk på alternativet 'Tabell' for å opprette en ny tabell. Siden vi allerede har laget tabellen 'emp', kan du se det på listen.

Prøv Select Query i spørringsredigereren for å hente postene til 'EMP' -tabellen, som vist nedenfor.

>> Velg * fra offentlig.EMP Order av “ID” ASC;

Følgende data vil være i "EMP" -tabellen.

Lag indekser med ett kolonne

Utvid "EMP" -tabellen for å finne forskjellige kategorier, e.g., Kolonner, begrensninger, indekser osv. Høyreklikk 'indekser,' naviger til alternativet 'opprette', og klikk 'indeks' for å opprette en ny indeks.

Konstruer en indeks for den gitte 'emp' -tabellen, eller eventuert skjerm, ved hjelp av indeksdialogvinduet. Her er det to faner: 'Generelt' og 'definisjon.'I fanen' Generelt ', sett inn en spesifikk tittel for den nye indeksen i feltet' Navn '. Velg 'tabellområdet' som den nye indeksen vil bli lagret ved hjelp av rullegardinlisten ved siden av 'tabellområdet.'Som i "kommentar" -området, kom med indekskommentarer her. For å begynne denne prosessen, naviger til fanen 'Definisjon'.

Her spesifiser "tilgangsmetoden" ved å velge indekstypen. Etter det, for å lage indeksen din som 'unik', er det flere andre alternativer som er oppført der. I 'kolonner' -området, trykk på '+' -tegnet, og legg til kolonnenavn som skal brukes til indeksering. Som du kan se, har vi bare brukt indeksering på kolonnen "Telefon". For å begynne, velg SQL -delen.

SQL -fanen viser SQL -kommandoen som er opprettet av inngangene dine gjennom indeksdialogen. Klikk på "Lagre" -knappen for å opprette indeksen.

Igjen, gå til alternativet 'Tabeller', og naviger til 'EMP' -tabellen. Oppdater alternativet 'indekser', så finner du den nyopprettede indeksen 'Index_on_phone' oppført i den.

Nå vil vi utføre forklarings -kommandoen for å sjekke resultatene for indeksene med hvor leddet. Dette vil resultere i følgende utgang, som sier: 'SEQ -skanning på emp.'Du lurer kanskje på hvorfor dette skjedde mens du bruker indekser.

Årsak: Postgres -planleggeren kan bestemme seg for ikke å ha en indeks av forskjellige grunner. Strategisten tar de beste beslutningene mesteparten av tiden, selv om årsakene ikke alltid er klare. Det er greit hvis et indekssøk brukes i noen spørsmål, men ikke i det hele tatt. Oppføringene som returneres fra begge tabellene kan variere, avhengig av de faste verdiene som er returnert av spørringen. Fordi dette skjer, er en sekvensskanning nesten alltid raskere enn en indeksskanning, noe.

Lag flere kolonneindekser

For å lage indekser med flere kolonner, åpner du kommandolinjeskallet og vurder følgende tabell 'Student' for å begynne å jobbe med indekser med flere kolonner.

>> velg * fra student;

Skriv følgende Opprett indeksforespørsel i den. Denne spørringen vil opprette en indeks som heter 'New_index' i kolonnene 'Sname' og 'Age' i 'Student' -tabellen.

>> Opprett indeks new_index på student (sname, alder);

Nå vil vi liste opp egenskapene og attributtene til den nyopprettede 'new_index' indeksen ved å bruke '\ d' -kommandoen. Som du kan se på bildet, er dette en indeks av BTREE-typen som ble brukt på kolonnene 'Sname' og 'Age'.

>> \ d new_index;

Lag unik indeks

For å konstruere en unik indeks, antar du følgende 'EMP' -tabell.

>> velg * fra emp;

Utfør Create Unique Index -spørringen i skallet, etterfulgt av indeksnavnet 'Empind' i kolonnen 'Navn' i 'EMP' -tabellen. I utgangen kan du se at den unike indeksen ikke kan brukes på en kolonne med duplikat "Navn" -verdier.

>> Lag unik indeks empind på emp (navn);

Sørg for å bruke den unike indeksen bare på kolonner som ikke inneholder duplikater. For "EMP" -tabellen kan du anta at bare 'ID' -kolonnen inneholder unike verdier. Så vi vil bruke en unik indeks på det.

>> Lag unik indeks empind på emp (id);

Følgende er attributtene til den unike indeksen.

>> \ d empid;

Slippindeks

Drop -setningen brukes til å fjerne en indeks fra en tabell.

>> Drop Index Empind;

Konklusjon

Mens indekser er designet for å forbedre effektiviteten til databaser, er det i noen tilfeller ikke mulig å bruke en indeks. Når du bruker en indeks, må følgende regler vurderes:

  • Indekser skal ikke kastes for små bord.
  • Tabeller med mye storstilt batchoppgradering/oppdatering eller tilleggs-/innsettingsoperasjoner.
  • For kolonner med en betydelig prosentandel av nullverdier, kan ikke indekser være virvar-
  • salg.
  • Indeksering bør unngås med regelmessig manipulerte kolonner.