Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Hajautusindeksointi | Kyselyoptimointi.Indeksit
Edistyneet SQL-Tekniikat

bookHajautusindeksointi

Tietyissä tilanteissa tarvitsemme indeksiä tiedon tehokkaaseen hakemiseen, mutta B-puu-indeksin käyttäminen voi olla liian monimutkaista ja tarpeetonta. Näissä tapauksissa hajautusindeksi voi olla sopivampi vaihtoehto.

Hajautusindeksi on tietokantaindeksin tyyppi, joka käyttää hajautusfunktiota indeksoitujen arvojen sijoittamiseen hajautustauluun.
Tässä indeksityypissä kohdesarakkeen arvot hajautetaan, eli ne muunnetaan kiinteän kokoiseksi arvoksi tai hajautuskoodiksi, jota käytetään indeksinä tietorivien hakemiseen.

Miten se toimii?

Hajautusindeksissä hajautusprosessi muuntaa indeksin avainarvon hajautuskoodiksi hajautusfunktion avulla. Tätä hajautuskoodia käytetään määrittämään sijainti eli "bucket", jossa vastaava tieto tallennetaan indeksissä.

Lisätietoja hajautuksesta löydät Algorithms and Data Structures Overview -kurssilta.

Tarkastellaan hajautusindeksiä kirjaston luettelointijärjestelmässä, jossa jokainen kirjan nimi indeksoidaan ISBN-tunnuksen (International Standard Book Number) perusteella.

Tässä esimerkissä käytämme hajautusfunktiota, joka muuntaa kirjan ISBN-tunnuksen heksadesimaaliseksi hajautuskoodiksi, kuten 0x7FA4, suorittamalla joukon matemaattisia operaatioita ISBN-numeroille.
Tämä hajautuskoodi toimii yksilöllisenä tunnisteena, määrittäen paikan hajautustaulussa, jossa on linkki kyseisen kirjan kaikki tiedot sisältävään taulun riviin.

Keskeiset ominaisuudet

  1. Nopea haku: Hajautusindeksit mahdollistavat nopeat haut yhtäsuuruusvertailuissa. Kun etsitään tiettyä arvoa, PostgreSQL laskee arvon hajautusarvon ja pääsee suoraan vastaavaan sijaintiin indeksissä, mikä tekee hausta erittäin tehokkaan;

  2. Rajoitettu operaattorituki: Toisin kuin B-puu-indeksit, hajautusindeksit tukevat vain yhtäsuuruusvertailuja (=), eivät aluekyselyitä (<, >, <=, >=) tai lajittelua. Tämä rajoitus tekee hajautusindekseistä vähemmän monipuolisia verrattuna B-puu-indekseihin;

  3. Nopeampi tietyissä käyttötapauksissa: Tilanteissa, joissa työkuorma sisältää suuren määrän yhtäsuuruushakuja, kuten pääavaimen tai yksilöllisyysrajoitteen valvonnassa, hajautusindeksit voivat olla nopeampia kuin B-puu-indeksit. Kuitenkin niiden suorituskykyetu heikkenee aluekyselyissä tai kun data ei sovi hyvin hajautusalgoritmille.

Toteutus

Hajautusindeksin voi toteuttaa SQL:ssä seuraavalla lauseella:

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

Tämän seurauksena sarakkeiden column_name1, column_name2,... arvot hajautetaan ja luodaan hajautustaulu. Tämä mahdollistaa vaadittujen tietorivien nopeamman haun.

question mark

Minkä tyyppinen kysely hyötyy eniten hajautusindeksin käytöstä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

What are the main differences between hash indexes and B-tree indexes?

Can you give more real-world examples where hash indexes are preferred?

Are there any drawbacks or limitations to using hash indexes?

Awesome!

Completion rate improved to 4.35

bookHajautusindeksointi

Pyyhkäise näyttääksesi valikon

Tietyissä tilanteissa tarvitsemme indeksiä tiedon tehokkaaseen hakemiseen, mutta B-puu-indeksin käyttäminen voi olla liian monimutkaista ja tarpeetonta. Näissä tapauksissa hajautusindeksi voi olla sopivampi vaihtoehto.

Hajautusindeksi on tietokantaindeksin tyyppi, joka käyttää hajautusfunktiota indeksoitujen arvojen sijoittamiseen hajautustauluun.
Tässä indeksityypissä kohdesarakkeen arvot hajautetaan, eli ne muunnetaan kiinteän kokoiseksi arvoksi tai hajautuskoodiksi, jota käytetään indeksinä tietorivien hakemiseen.

Miten se toimii?

Hajautusindeksissä hajautusprosessi muuntaa indeksin avainarvon hajautuskoodiksi hajautusfunktion avulla. Tätä hajautuskoodia käytetään määrittämään sijainti eli "bucket", jossa vastaava tieto tallennetaan indeksissä.

Lisätietoja hajautuksesta löydät Algorithms and Data Structures Overview -kurssilta.

Tarkastellaan hajautusindeksiä kirjaston luettelointijärjestelmässä, jossa jokainen kirjan nimi indeksoidaan ISBN-tunnuksen (International Standard Book Number) perusteella.

Tässä esimerkissä käytämme hajautusfunktiota, joka muuntaa kirjan ISBN-tunnuksen heksadesimaaliseksi hajautuskoodiksi, kuten 0x7FA4, suorittamalla joukon matemaattisia operaatioita ISBN-numeroille.
Tämä hajautuskoodi toimii yksilöllisenä tunnisteena, määrittäen paikan hajautustaulussa, jossa on linkki kyseisen kirjan kaikki tiedot sisältävään taulun riviin.

Keskeiset ominaisuudet

  1. Nopea haku: Hajautusindeksit mahdollistavat nopeat haut yhtäsuuruusvertailuissa. Kun etsitään tiettyä arvoa, PostgreSQL laskee arvon hajautusarvon ja pääsee suoraan vastaavaan sijaintiin indeksissä, mikä tekee hausta erittäin tehokkaan;

  2. Rajoitettu operaattorituki: Toisin kuin B-puu-indeksit, hajautusindeksit tukevat vain yhtäsuuruusvertailuja (=), eivät aluekyselyitä (<, >, <=, >=) tai lajittelua. Tämä rajoitus tekee hajautusindekseistä vähemmän monipuolisia verrattuna B-puu-indekseihin;

  3. Nopeampi tietyissä käyttötapauksissa: Tilanteissa, joissa työkuorma sisältää suuren määrän yhtäsuuruushakuja, kuten pääavaimen tai yksilöllisyysrajoitteen valvonnassa, hajautusindeksit voivat olla nopeampia kuin B-puu-indeksit. Kuitenkin niiden suorituskykyetu heikkenee aluekyselyissä tai kun data ei sovi hyvin hajautusalgoritmille.

Toteutus

Hajautusindeksin voi toteuttaa SQL:ssä seuraavalla lauseella:

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

Tämän seurauksena sarakkeiden column_name1, column_name2,... arvot hajautetaan ja luodaan hajautustaulu. Tämä mahdollistaa vaadittujen tietorivien nopeamman haun.

question mark

Minkä tyyppinen kysely hyötyy eniten hajautusindeksin käytöstä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 4
some-alt