Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Hashindexering | Frågeoptimering.Indexer
SQL-optimering och Frågefunktioner

Hashindexering

Svep för att visa menyn

I vissa situationer krävs ett index för att effektivt söka efter information, men att använda ett B-tree-index kan vara onödigt komplext och överflödigt. I sådana fall kan ett hashindex vara ett mer lämpligt alternativ.

Ett hashindex är en typ av databasindex som använder en hashfunktion för att mappa indexerade värden till platser i en hashtabell.
I denna indextyp hashas värdena i målkolumnen, vilket innebär att de omvandlas till ett värde av fast storlek eller en hashkod, som sedan används som index för att hämta datarader.

Hur fungerar det?

I ett hashindex innebär hashprocessen att ett indexnyckelvärde omvandlas till en hashkod med hjälp av en hashfunktion. Denna hashkod används sedan för att bestämma platsen, eller "bucket", där motsvarande data lagras i indexet.

Tänk dig ett hashindex för ett bibliotekskatalogsystem där varje boktitel indexeras med sitt ISBN (International Standard Book Number).

I detta exempel använder vi en hashfunktion för att omvandla en boks ISBN till en hexadecimal hashkod, såsom 0x7FA4, genom en serie matematiska operationer på ISBN-siffrorna.
Denna hashkod fungerar som en unik identifierare, bestämmer platsen i hashtabellen där det finns en länk till motsvarande rad i tabellen, som innehåller all information om just den boken.

Nyckelfunktioner

  1. Snabb uppslagning: hashindex ger snabba uppslagningar för likhetsjämförelser. När en specifik värde söks, beräknar PostgreSQL hashvärdet för värdet och får sedan direkt åtkomst till motsvarande plats i indexet, vilket gör hämtningen mycket effektiv;

  2. Begränsat operatörsstöd: till skillnad från B-tree-index stöder hashindex endast likhetsjämförelser (=), inte intervallfrågor (<, >, <=, >=) eller sortering. Denna begränsning gör hashindex mindre mångsidiga jämfört med B-tree-index;

  3. Snabbare för vissa användningsfall: i scenarier där arbetsbelastningen innebär en hög volym av likhetsuppslagningar, såsom primärnyckel- eller unika begränsningskontroller, kan hashindex prestera bättre än B-tree-index. Dock minskar deras prestandafördel vid intervallfrågor eller data som inte passar bra med hashalgoritmen.

Implementering

Vi kan implementera hashindex i SQL med följande sats:

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

Som ett resultat kommer värdena i column_name1, column_name2,... att hashkodas och hashtabellen kommer att skapas. Detta möjliggör snabbare hämtning av de önskade dataraderna.

question mark

Vilken typ av fråga gynnas mest av att använda ett hashindex?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 2. Kapitel 4
some-alt