Hash-indeksering
I enkelte situasjoner trenger vi en indeks for å effektivt søke etter informasjon, men bruk av en B-tre-indeks kan være unødvendig komplisert og overflødig. I slike tilfeller kan en hash-indeks være et mer passende alternativ.
En hash-indeks er en type databaseindeks som bruker en hash-funksjon for å tilordne indekserte verdier til plasseringer i en hash-tabell.
I denne indekstypen blir verdiene i målkolonnen hashet, det vil si at de omdannes til en fast størrelse eller hash-kode, som deretter brukes som indeks for å hente ut datarader.
Hvordan fungerer det?
I en hash-indeks innebærer hash-prosessen å transformere en indeksnøkkelverdi til en hash-kode ved hjelp av en hash-funksjon. Denne hash-koden brukes deretter til å bestemme plasseringen, eller "bucket", hvor de tilhørende dataene lagres i indeksen.
Du finner mer informasjon om hashing i Oversikt over algoritmer og datastrukturer-kurset.
La oss se på en hash-indeks for et bibliotekskatalogsystem hvor hver boktittel indekseres etter sin ISBN (International Standard Book Number).
I dette eksempelet bruker vi en hash-funksjon for å konvertere ISBN-en til en bok til en heksadesimal hash-kode, for eksempel 0x7FA4
, ved å utføre en rekke matematiske operasjoner på ISBN-sifrene.
Denne hash-koden fungerer som en unik identifikator, som bestemmer plassen i hash-tabellen hvor det finnes en kobling til den tilsvarende linjen i tabellen, som inneholder all informasjon om den aktuelle boken.
Nøkkelfunksjoner
-
Rask oppslag: Hash-indekser gir raske oppslag for likhets-sammenligninger. Når du søker etter en spesifikk verdi, beregner PostgreSQL hash-verdien av verdien og får deretter direkte tilgang til den tilsvarende plasseringen i indeksen, noe som gjør uthenting svært effektiv;
-
Begrenset operatørstøtte: I motsetning til B-tre-indekser støtter hash-indekser kun likhets-sammenligninger (
=
), ikke intervallspørringer (<
,>
,<=
,>=
) eller sortering. Denne begrensningen gjør hash-indekser mindre allsidige sammenlignet med B-tre-indekser; -
Raskere for enkelte bruksområder: I scenarier der arbeidsmengden innebærer et høyt volum av likhetsoppslag, som håndheving av primærnøkkel eller unike begrensninger, kan hash-indekser yte bedre enn B-tre-indekser. Imidlertid reduseres ytelsesfordelen deres ved intervallspørringer eller data som ikke passer godt med hash-algoritmen.
Implementering
Vi kan implementere hash-indeks i SQL ved å bruke følgende kommando:
CREATE INDEX hash_index_name ON table_name USING HASH (column_name1, column_name2,... );
Som et resultat vil verdiene i column_name1, column_name2,...
bli hashet og en hash-tabell vil bli opprettet. Dette muliggjør raskere uthenting av de nødvendige dataradene.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 4.35
Hash-indeksering
Sveip for å vise menyen
I enkelte situasjoner trenger vi en indeks for å effektivt søke etter informasjon, men bruk av en B-tre-indeks kan være unødvendig komplisert og overflødig. I slike tilfeller kan en hash-indeks være et mer passende alternativ.
En hash-indeks er en type databaseindeks som bruker en hash-funksjon for å tilordne indekserte verdier til plasseringer i en hash-tabell.
I denne indekstypen blir verdiene i målkolonnen hashet, det vil si at de omdannes til en fast størrelse eller hash-kode, som deretter brukes som indeks for å hente ut datarader.
Hvordan fungerer det?
I en hash-indeks innebærer hash-prosessen å transformere en indeksnøkkelverdi til en hash-kode ved hjelp av en hash-funksjon. Denne hash-koden brukes deretter til å bestemme plasseringen, eller "bucket", hvor de tilhørende dataene lagres i indeksen.
Du finner mer informasjon om hashing i Oversikt over algoritmer og datastrukturer-kurset.
La oss se på en hash-indeks for et bibliotekskatalogsystem hvor hver boktittel indekseres etter sin ISBN (International Standard Book Number).
I dette eksempelet bruker vi en hash-funksjon for å konvertere ISBN-en til en bok til en heksadesimal hash-kode, for eksempel 0x7FA4
, ved å utføre en rekke matematiske operasjoner på ISBN-sifrene.
Denne hash-koden fungerer som en unik identifikator, som bestemmer plassen i hash-tabellen hvor det finnes en kobling til den tilsvarende linjen i tabellen, som inneholder all informasjon om den aktuelle boken.
Nøkkelfunksjoner
-
Rask oppslag: Hash-indekser gir raske oppslag for likhets-sammenligninger. Når du søker etter en spesifikk verdi, beregner PostgreSQL hash-verdien av verdien og får deretter direkte tilgang til den tilsvarende plasseringen i indeksen, noe som gjør uthenting svært effektiv;
-
Begrenset operatørstøtte: I motsetning til B-tre-indekser støtter hash-indekser kun likhets-sammenligninger (
=
), ikke intervallspørringer (<
,>
,<=
,>=
) eller sortering. Denne begrensningen gjør hash-indekser mindre allsidige sammenlignet med B-tre-indekser; -
Raskere for enkelte bruksområder: I scenarier der arbeidsmengden innebærer et høyt volum av likhetsoppslag, som håndheving av primærnøkkel eller unike begrensninger, kan hash-indekser yte bedre enn B-tre-indekser. Imidlertid reduseres ytelsesfordelen deres ved intervallspørringer eller data som ikke passer godt med hash-algoritmen.
Implementering
Vi kan implementere hash-indeks i SQL ved å bruke følgende kommando:
CREATE INDEX hash_index_name ON table_name USING HASH (column_name1, column_name2,... );
Som et resultat vil verdiene i column_name1, column_name2,...
bli hashet og en hash-tabell vil bli opprettet. Dette muliggjør raskere uthenting av de nødvendige dataradene.
Takk for tilbakemeldingene dine!