En indeks fremskynder datahenting. Uten en indeks skanner databasen hver rad for å finne samsvarende poster. Med en indeks hopper den direkte til de relevante radene. Indeksen er en separat datastruktur som tilordner verdier til steder. En bokindeks fungerer på samme måte. Du slår opp et begrep og finner sidetallet. Du leser ikke hver side for å finne det. Databasen gjør det samme.
Indekser har en kostnad. De tar plass. De bremser innsettinger, oppdateringer og slettinger fordi indeksen også må oppdateres. Hver skriving blir dyrere. Fordelen er raskere lesing. For lesetunge arbeidsbelastninger er indekser avgjørende. For skrivetunge arbeidsbelastninger skader for mange indekser ytelsen. Å velge hvilke kolonner som skal indekseres krever forståelse av spørremønstrene. Kolonner som brukes i WHERE-klausuler, JOIN-betingelser og ORDER BY-klausuler er gode kandidater. Kolonner med lav kardinalitet, som et boolsk flagg, er dårlige kandidater fordi indeksen ikke begrenser søket mye. Sammensatte indekser dekker flere kolonner og kan betjene spørringer som filtrerer på flere felt. Rekkefølgen på kolonnene i en sammensatt indeks er viktig. Databasen kan bruke en sammensatt indeks for spørringer på den ledende kolonnen, men ikke bare på etterfølgende kolonner. Indeksdesign er en avveining. Målet er å øke hastigheten på spørringene som er viktige uten å bremse skrivinger mer enn nødvendig.
Indekstyper
- B-tre – standard for de fleste databaser, bra for områdespørringer
- Hash — raske likhetsoppslag, ingen støtte for rekkevidde
- Bitmap — kolonner med lav kardinalitet, analytiske spørringer
- Fulltekst – tekstsøk
- Sammensatt — flere kolonner i én indeks
En indeks er en snarvei. Den bytter skrivehastighet og lagringsplass mot lesehastighet. Bruk den der lesing betyr mest.
Comments (3)
Leave a comment