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

bookHajautusindeksointi

Tietyissä tilanteissa tarvitsemme indeksiä tietojen tehokkaaseen hakuun, 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 kartoittamiseen hajautustaulun sijainteihin.
Tässä indeksityypissä kohdesarakkeen arvot hajautetaan, eli ne muunnetaan kiinteän kokoisiksi arvoiksi tai hajautuskoodeiksi, joita 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ä.

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

Tässä esimerkissä käytämme hajautusfunktiota muuntamaan kirjan ISBN-merkinnän 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 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 hajautuksen ja pääsee suoraan vastaavaan sijaintiin indeksissä, mikä tekee hausta erittäin tehokasta;

  2. Rajoitettu operaattorituki: toisin kuin B-puu-indeksit, hajautusindeksit tukevat vain yhtäsuuruusvertailuja (=), eivät aluehakuja (<, >, <=, >=) 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ääavain- tai yksilöllisyysrajoitteiden valvonnassa, hajautusindeksit voivat olla nopeampia kuin B-puu-indeksit. Kuitenkin niiden suorituskykyetu heikkenee aluehauissa tai kun data ei sovi hyvin hajautusalgoritmiin.

Toteutus

Voimme toteuttaa hajautusindeksin SQL:ssä seuraavalla lauseella:

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

Tämän seurauksena column_name1, column_name2,... arvot hajautetaan ja hajautustaulu luodaan. 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:

Can you explain the difference between a hash index and a B-tree index?

What are some scenarios where a hash index is preferred over a B-tree index?

Are there any drawbacks or limitations to using hash indexes?

bookHajautusindeksointi

Pyyhkäise näyttääksesi valikon

Tietyissä tilanteissa tarvitsemme indeksiä tietojen tehokkaaseen hakuun, 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 kartoittamiseen hajautustaulun sijainteihin.
Tässä indeksityypissä kohdesarakkeen arvot hajautetaan, eli ne muunnetaan kiinteän kokoisiksi arvoiksi tai hajautuskoodeiksi, joita 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ä.

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

Tässä esimerkissä käytämme hajautusfunktiota muuntamaan kirjan ISBN-merkinnän 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 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 hajautuksen ja pääsee suoraan vastaavaan sijaintiin indeksissä, mikä tekee hausta erittäin tehokasta;

  2. Rajoitettu operaattorituki: toisin kuin B-puu-indeksit, hajautusindeksit tukevat vain yhtäsuuruusvertailuja (=), eivät aluehakuja (<, >, <=, >=) 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ääavain- tai yksilöllisyysrajoitteiden valvonnassa, hajautusindeksit voivat olla nopeampia kuin B-puu-indeksit. Kuitenkin niiden suorituskykyetu heikkenee aluehauissa tai kun data ei sovi hyvin hajautusalgoritmiin.

Toteutus

Voimme toteuttaa hajautusindeksin SQL:ssä seuraavalla lauseella:

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

Tämän seurauksena column_name1, column_name2,... arvot hajautetaan ja hajautustaulu luodaan. 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