Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Hash-Indeksering | Forespørgselsoptimering.Indekser
SQL-optimering og Forespørgselsfunktioner

Hash-Indeksering

Stryg for at vise menuen

I visse situationer kræves et indeks for effektivt at kunne søge efter information, men brugen af et B-tree-indeks kan være unødvendigt komplekst og overflødigt. I sådanne tilfælde kan et hash-indeks være et mere passende alternativ.

Et hash-indeks er en type databaseindeks, der anvender en hashfunktion til at kortlægge indekserede værdier til placeringer i en hash-tabel.
I denne indeks-type bliver værdierne i målkolonnen hashet, hvilket betyder, at de omdannes til en faststørrelsesværdi eller hashkode, som derefter bruges som indeks til at hente datarækker.

Hvordan fungerer det?

I et hash-indeks indebærer hash-processen at omdanne en indeksnøgleværdi til en hashkode ved hjælp af en hashfunktion. Denne hashkode bruges derefter til at bestemme placeringen, eller "bucket", hvor de tilsvarende data er gemt i indekset.

Overvej et hash-indeks for et bibliotekskatalogsystem, hvor hver bogtitel indekseres efter dens ISBN (International Standard Book Number).

I dette eksempel anvendes en hashfunktion til at konvertere en bogs ISBN til en hexadecimal hashkode, såsom 0x7FA4, ved hjælp af en række matematiske operationer på ISBN-cifrene.
Denne hashkode fungerer som en unik identifikator, der bestemmer pladsen i hash-tabellen, hvor der findes et link til den tilsvarende linje i tabellen, som indeholder alle oplysninger om den pågældende bog.

Nøglefunktioner

  1. Hurtig opslag: hash-indekser giver hurtige opslag ved ligheds-sammenligninger. Når der søges efter en specifik værdi, beregner PostgreSQL hash-værdien for værdien og får derefter direkte adgang til den tilsvarende placering i indekset, hvilket gør hentningen meget effektiv;

  2. Begrænset operatørunderstøttelse: i modsætning til B-tree-indekser understøtter hash-indekser kun ligheds-sammenligninger (=), ikke intervalforespørgsler (<, >, <=, >=) eller sortering. Denne begrænsning gør hash-indekser mindre alsidige sammenlignet med B-tree-indekser;

  3. Hurtigere til visse anvendelser: i scenarier hvor arbejdsbyrden involverer et stort antal lighedsopslag, såsom håndhævelse af primærnøgle eller unikke begrænsninger, kan hash-indekser overgå B-tree-indekser. Dog mindskes deres præstationsfordel ved intervalforespørgsler eller data, der ikke passer godt til hash-algoritmen.

Implementering

Vi kan implementere hash-indeks i SQL ved hjælp af følgende statement:

CREATE INDEX hash_index_name ON table_name USING HASH (column_name1, column_name2,... );

Som resultat vil værdierne af column_name1, column_name2,... blive hashet, og hash-tabellen vil blive oprettet. Dette muliggør hurtigere hentning af de nødvendige datarækker.

question mark

Hvilken type forespørgsel har størst fordel af at bruge et hash-indeks?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 2. Kapitel 4
some-alt