Indekser er spesielle oppslagstabeller at databasen søkemotor kan bruke til å øke hastigheten på innhenting av data. Enkelt sagt, en indeks er en peker til data i en tabell. En indeks i en database er svært lik en indeks på baksiden av en bok.
For eksempel, hvis du ønsker å referere til alle sider i en bok som diskuterer et bestemt tema, må du først se i indeksen, som lister opp alle emner alfabetisk, og blir deretter henvist til en eller flere spesifikke sidetall.
En indeks hjelper fremskynde SELECT spørringer og HVOR klausuler, men det bremser ned data input, med UPDATE og INSERT-setninger. Indekser kan opprettes eller falt med ingen effekt på data.
Opprette en indeks innebærer CREATE INDEX uttalelsen, som lar deg navngi indeksen, for å spesifisere bordet og hvilken kolonne eller kolonner å indeksere, og å indikere om indeksen er i stigende eller synkende rekkefølge.
Indekser kan også være unikt, lik den entydig begrensning i at indeksen hindrer doble oppføringer i kolonnen eller kombinasjon av kolonner som det er en indeks.
CREATE INDEX Command:
Den grunnleggende syntaks CREATE INDEX
er som følger:
CREATE INDEX index_name PÅ table_name;
Oversikt Typer
< p> PostgreSQL gir flere indekstyper: B-tree, Hash, GIST, SP-GIST og GIN. Hver indekstypen benytter en annen algoritme som er best egnet til forskjellige typer søk. Som standard INDEX kommandoen CREATE skaper B-tre indekser, som passer de mest vanlige situasjoner
enkelt kolonne Indexes.
En indeks enkelt kolonne er en som er laget basert på kun én tabell kolonne. Den grunnleggende syntaks er som følger:
CREATE INDEX index_nameON table_name (kolonne);
multicolumn Indexes:
En multicolumn indeksen er definert på mer enn én kolonne i en tabell. Den grunnleggende syntaks er som følger:
CREATE INDEX index_nameON table_name (column1_name, column2_name);
Enten å lage en indeks enkelt kolonne eller en multicolumn indeks, ta hensyn til kolonnen (e) som du kan bruke veldig ofte i en spørring er der klausulen som filterbetingelsene.
Skal det bare være én kolonne brukes, en indeks enkelt kolonne bør være førstevalget. Skulle det være to eller flere kolonner som ofte brukes i WHERE-leddet som filtre, ville multicolumn indeksen være det beste valget
Unike Indexes.
Unike indekser brukes ikke bare for ytelse , men også for dataintegritet. En unik indeks tillater ikke noen like verdier som skal settes inn i tabellen. Den grunnleggende syntaks er som følger:
CREATE UNIQUE INDEX index_nameon table_name (kolonne);
Delvis Indexes:
En delvis indeksen er en indeks bygget over en undergruppe av en tabell; undergruppe er definert av en betinget uttrykk (kalt predikat av partial-indeks). Indeksen inneholder poster bare for de tabellrader som tilfreds predikatet. Den grunnleggende syntaks er som følger:
CREATE INDEX index_nameon table_name (conditional_expression);
Implisitt Indexes:
Implisitt indekser er indekser som opprettes automatisk av databaseserveren når et objekt opprettes. Indeksene er automatisk opprettet for primærnøkkel begrensninger og entydige begrensninger
Eksempel
Følgende er et eksempel hvor vi vil skape en indeks på COMPANY bordet for lønn kolonne.
# CREATE INDEX salary_index ON COMPANY (lønn);
Nå, la oss liste ned alle indeksene tilgjengelige på COMPANY bord ved hjelp av \\ d selskap
kommandoen som følger:
# \\ d selskap
Dette vil gi følgende resultat , der company_pkey
er et implisitt indeks som fikk opprettet da bordet ble opprettet
Table "public.company" Column. | Skriv inn | Modifikatorer --------- + --------------- + ----------- id | heltall | ikke null navn | tekst | ikke null alder | heltall | ikke null adresse | tegn (50) | lønn | reelle | Indexes: "company_pkey" primærnøkkel, btree (id) "salary_index" btree (lønn)
Du kan liste ned hele indekser database bredt ved hjelp av \\ di
kommando:
Den DROP INDEX Command:
En indeks kan bli droppet å bruke PostgreSQL DROP
kommando. Forsiktighet bør tas når slippe en indeks fordi resultatene kan bli bremset eller forbedret
Den grunnleggende syntaks er som følger:.
DROP INDEX index_name;
Du kan bruke følgende utsagn for å slette tidligere opprettet Indeks:
# DROP INDEX salary_index;
Når bør indekser unngås
Selv om indeksene er beregnet på å forsterke en database ytelse, det er tider når de bør unngås?. Følgende retningslinjer indikere når bruken av en indeks bør revurderes.
avskriftene bør ikke brukes på små bord
Tabeller som har hyppig, stort batch oppdatere eller sette driften.
avskriftene bør ikke brukes på kolonner som inneholder et høyt antall NULL verdier.
Kolonner som ofte manipulert bør ikke bli indeksert.