PostgreSQL

Hvordan lage indekser i PostgreSQL

Hvordan lage indekser i PostgreSQL

Indekser er spesialiserte søketabeller som brukes av databankjaktmotorer for å akselerere søkeresultater. En indeks er en referanse til informasjonen i en tabell. Hvis navnene i en kontaktbok for eksempel ikke er alfabetiserte, må du gå ned hver rad og søke gjennom hvert navn før du når det spesifikke telefonnummeret du leter etter. En indeks fremskynder SELECT-kommandoene og WHERE-setningene og utfører dataregistrering i UPDATE- og INSERT-kommandoene. Uansett om indekser settes inn eller slettes, har det ingen innvirkning på informasjonen i tabellen. Indekser kan være spesielle på samme måte som UNIQUE-begrensningen hjelper til med å unngå kopiposter i feltet eller settet med felt som indeksen eksisterer for.

Generell syntaks

Følgende generelle syntaks brukes til å lage indekser.

>> CREATE INDEX index_name ON table_name (column_name);

For å begynne å jobbe med indekser, åpne pgAdmin for Postgresql fra applikasjonsfeltet. Du finner alternativet 'Servere' vist nedenfor. Høyreklikk på dette alternativet og koble det til databasen.

Som du kan se, er databasen 'Test' oppført i 'Databaser' alternativet. Hvis du ikke har en, høyreklikker du på 'Databaser', naviger til alternativet 'Opprett' og navngir databasen i henhold til dine preferanser.

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

Prøv SELECT-spørringen i Query Editor for å hente postene til 'emp' -tabellen, som vist nedenfor.

>> VELG * FRA offentlig.emp ORDRE MED “id” ASC;

Følgende data vil være i 'emp' tabellen.

Lag enkeltkolonneindekser

Utvid 'emp' tabellen for å finne forskjellige kategorier, f.eks.g., Kolonner, begrensninger, indekser osv. Høyreklikk 'Indekser', naviger til alternativet 'Opprett' og klikk 'Indeks' for å opprette en ny indeks.

Konstruer en indeks for den gitte 'emp' -tabellen, eller den hendte skjermen, ved hjelp av indeksdialogvinduet. Her er det to faner: 'Generelt' og 'Definisjon.I kategorien 'Generelt' setter du inn en spesifikk tittel for den nye indeksen i 'Navn' -feltet. Velg 'tablespace' der den nye indeksen skal lagres, ved hjelp av rullegardinlisten ved siden av 'Tablespace.'Som i området' Kommentar ', kom med indekskommentarer her. For å starte denne prosessen, naviger til "Definisjon" -fanen.

Her angir du tilgangsmetoden ved å velge indekstype. Etter det, for å lage indeksen din som 'Unik', er det flere andre alternativer oppført der. I området 'Kolonner' klikker du på '+' -tegnet og legger til kolonnenavnene som skal brukes til indeksering. Som du ser, har vi bare brukt indeksering i kolonnen 'Telefon'. For å begynne, velg SQL-seksjonen.

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

Igjen, gå til 'Tabeller' alternativet, og naviger til 'emp' tabellen. Oppdater alternativet 'Indekser', og du vil finne den nyopprettede 'index_on_phone' indeksen som er oppført i den.

Nå skal vi utføre kommandoen EXPLAIN SELECT for å sjekke resultatene for indeksene med WHERE-setningen. Dette vil resultere i følgende utgang, som sier 'Seq Scan on emp.'Du lurer kanskje på hvorfor dette skjedde mens du bruker indekser.

Årsak: Postgres-planleggeren kan av forskjellige grunner bestemme seg for ikke å ha en indeks. Strategen tar de beste beslutningene mesteparten av tiden, selv om årsakene ikke alltid er klare. Det er greit hvis det brukes indeks-søk i noen spørsmål, men ikke i det hele tatt. Oppføringene som returneres fra en av tabellene, kan variere, avhengig av de faste verdiene som returneres av spørringen. Fordi dette skjer, er en sekvensskanning nesten alltid raskere enn en indeksskanning, noe som indikerer at kanskje spørringsplanleggeren hadde rett i å avgjøre at kostnadene for å kjøre spørringen på denne måten reduseres.

Lag flere kolonneindekser

For å opprette indekser med flere kolonner, åpne kommandolinjeskallet og vurder følgende tabell 'student' for å begynne å jobbe med indekser med flere kolonner.

>> VELG * FRA Student;

Skriv følgende CREATE INDEX-spørsmål i den. Dette spørsmålet vil opprette en indeks med navnet 'new_index' i kolonnene 'sname' og 'age' i 'student' -tabellen.

>> OPPRETT INDEKS new_index ON Student (sname, age);

Nå vil vi liste opp egenskapene og attributtene til den nylig opprettede 'new_index' indeksen ved hjelp av kommandoen '\ d'. Som du kan se på bildet, er dette en btree-indeks som ble brukt på kolonnene 'sname' og 'age'.

>> \ d new_index;

Opprett UNIQUE Index

For å konstruere en unik indeks, anta følgende 'emp' tabell.

>> VELG * FRA emp;

Utfør CREATE UNIQUE INDEX-spørringen i skallet, etterfulgt av indeksnavnet 'empind' i 'name' -kolonnen i 'emp' -tabellen. I utgangen kan du se at den unike indeksen ikke kan brukes på en kolonne med dupliserte "navn" -verdier.

>> OPPRETT unike INDEX empind ON emp (name);

Husk å bruke den unike indeksen bare på kolonner som ikke inneholder duplikater. For 'emp' -tabellen kan du anta at bare kolonnen 'id' inneholder unike verdier. Så vi vil bruke en unik indeks på den.

>> OPPRETT unike INDEX empind ON emp (id);

Følgende er attributtene til den unike indeksen.

>> \ d empid;

Drop Index

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

>> DROP INDEX empind;

Konklusjon

Mens indekser er utformet 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:

5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...
Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...