Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære B-Tre Indeksering | Spørringsoptimalisering.Indekser
SQL-optimalisering og spørringsfunksjoner

B-Tre Indeksering

Sveip for å vise menyen

Et B-tre-indeks er en balansert trestruktur som ofte brukes i databaser for å organisere og søke gjennom store datamengder på en effektiv måte.
B-trær ligner mye på binære søketrær (BST), men nodene i et B-tre kan ha mer enn to barn.

B-treet lagrer nøkler i sortert rekkefølge i nodene, noe som gir rask datatilgang gjennom hierarkisk traversering fra roten til bladnodene. B-tre-indeksering egner seg godt for intervallspørringer og likhetssøk, og er derfor et populært valg for å optimalisere databaseytelse.

Note
Les mer

En intervallspørring er en databaseoperasjon som henter data innenfor et spesifisert verdiintervall for en bestemt attributt eller kolonne. Dette gjør det mulig å hente poster som faller innenfor et definert område, for eksempel verdier mellom to datoer eller innenfor et numerisk intervall. Følgende operatorer brukes i intervallsøk: >, <, >=, <=.

Et likhetssøk er en databaseoperasjon som henter data basert på eksakt samsvar med en spesifisert verdi for en bestemt attributt eller kolonne. Dette gjør det mulig å finne poster som nøyaktig samsvarer med et gitt kriterium, for eksempel å finne alle kunder med en bestemt e-postadresse eller et spesifikt bruker-ID. Disse spørringene inkluderer operatorene = og <>.

Hvordan fungerer det?

B-tre-indekset organiserer data på en hierarkisk måte, der hver node inneholder et fast antall nøkler og pekere til underordnede noder.
B-trær opprettholder balanse ved å sikre at alle bladnoder er på samme nivå, noe som optimaliserer søkeoperasjoner.
Når man søker etter en bestemt nøkkel, traverserer B-tre-algoritmen treet fra roten og ned til bladnodene, og benytter binærsøk for effektivt å finne ønsket nøkkel.

Indeksoppslag innebærer å traversere treet for å nå bladnodene, følge bladnodekjeden for å finne samsvarende poster, og hente ut de faktiske dataene fra disken.

I figuren vises oppslag etter nøkkel 302:

  1. En søketruktur er en type tre der hver node har to pekere: venstre peker til barnenoder med verdier mindre enn foreldrenoden, og høyre peker til barnenoder med verdier større enn foreldrenoden;

  2. I et B-tre kan roten inneholde flere indeksverdier. For eksempel, hvis roten inneholder tre distinkte verdier, vil den ha tre pekere, hver som indikerer området av verdier mellom disse nøkkelverdiene;

  3. For å søke etter en nøkkel, som 302, starter søket i roten og følger de riktige pekerne ned til bladnodene. Søket fullføres etter å ha traversert tre treblokker, som vist i diagrammet markert med rødt;

  4. For å søke etter et verdiintervall som starter fra 302, kan du bruke de horisontale pekerne mellom bladnodene. For eksempel hentes verdier fra 302 til 502 ved å følge bladnodene sekvensielt.

Note
Merk

Nøkkelen som brukes for søk i et B-tre-indeks kommer fra verdiene lagret i de indekserte kolonnene i database tabellen. For eksempel, hvis indeksen er på en kolonne som "client_id", vil søkenøkkelen være de faktiske "client_id"-verdiene. Hver unik numerisk verdi i den indekserte kolonnen fungerer som en nøkkel i B-tre-indeksen, noe som gjør det enklere å finne og hente de tilsvarende radene i database tabellen.

Fordeler og ulemper

I motsetning til den vanlige datastrukturen Binært Søk-tre, kan B-tre-noder ha mer enn 2 barn. Maksimalt antall barn per node er vanligvis satt til 16.

Indeksimplementering

For å opprette en B-tre-indeks på en kolonne i PostgreSQL, kan du bruke følgende SQL-kommando:

CREATE INDEX index_name ON table_name USING BTREE (column_name1, column_name2,...);

Siden B-tre-indeksen er en standardindeks i SQL, kan vi også bruke følgende setning for å opprette den:

CREATE INDEX index_name ON table_name(column_name1, column_name2,..);
Note
Merk

I SQL, når du oppretter en tabell med en primærnøkkelbegrensning, vil de fleste databasesystemer automatisk opprette en indeks på kolonnen(e) som er angitt i primærnøkkelen. Denne indeksen bidrar til å håndheve unikhetskravet til primærnøkkelen og forbedrer også ytelsen til spørringer som involverer søk eller sammenkobling basert på primærnøkkelkolonnen(e).

question mark

Hvilken operasjon vil IKKE føre til at en B-tre-indeks reorganiseres eller rebalanseres i PostgreSQL?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

B-Tre Indeksering

Et B-tre-indeks er en balansert trestruktur som ofte brukes i databaser for å organisere og søke gjennom store datamengder på en effektiv måte.
B-trær ligner mye på binære søketrær (BST), men nodene i et B-tre kan ha mer enn to barn.

B-treet lagrer nøkler i sortert rekkefølge i nodene, noe som gir rask datatilgang gjennom hierarkisk traversering fra roten til bladnodene. B-tre-indeksering egner seg godt for intervallspørringer og likhetssøk, og er derfor et populært valg for å optimalisere databaseytelse.

Note
Les mer

En intervallspørring er en databaseoperasjon som henter data innenfor et spesifisert verdiintervall for en bestemt attributt eller kolonne. Dette gjør det mulig å hente poster som faller innenfor et definert område, for eksempel verdier mellom to datoer eller innenfor et numerisk intervall. Følgende operatorer brukes i intervallsøk: >, <, >=, <=.

Et likhetssøk er en databaseoperasjon som henter data basert på eksakt samsvar med en spesifisert verdi for en bestemt attributt eller kolonne. Dette gjør det mulig å finne poster som nøyaktig samsvarer med et gitt kriterium, for eksempel å finne alle kunder med en bestemt e-postadresse eller et spesifikt bruker-ID. Disse spørringene inkluderer operatorene = og <>.

Hvordan fungerer det?

B-tre-indekset organiserer data på en hierarkisk måte, der hver node inneholder et fast antall nøkler og pekere til underordnede noder.
B-trær opprettholder balanse ved å sikre at alle bladnoder er på samme nivå, noe som optimaliserer søkeoperasjoner.
Når man søker etter en bestemt nøkkel, traverserer B-tre-algoritmen treet fra roten og ned til bladnodene, og benytter binærsøk for effektivt å finne ønsket nøkkel.

Indeksoppslag innebærer å traversere treet for å nå bladnodene, følge bladnodekjeden for å finne samsvarende poster, og hente ut de faktiske dataene fra disken.

I figuren vises oppslag etter nøkkel 302:

  1. En søketruktur er en type tre der hver node har to pekere: venstre peker til barnenoder med verdier mindre enn foreldrenoden, og høyre peker til barnenoder med verdier større enn foreldrenoden;

  2. I et B-tre kan roten inneholde flere indeksverdier. For eksempel, hvis roten inneholder tre distinkte verdier, vil den ha tre pekere, hver som indikerer området av verdier mellom disse nøkkelverdiene;

  3. For å søke etter en nøkkel, som 302, starter søket i roten og følger de riktige pekerne ned til bladnodene. Søket fullføres etter å ha traversert tre treblokker, som vist i diagrammet markert med rødt;

  4. For å søke etter et verdiintervall som starter fra 302, kan du bruke de horisontale pekerne mellom bladnodene. For eksempel hentes verdier fra 302 til 502 ved å følge bladnodene sekvensielt.

Note
Merk

Nøkkelen som brukes for søk i et B-tre-indeks kommer fra verdiene lagret i de indekserte kolonnene i database tabellen. For eksempel, hvis indeksen er på en kolonne som "client_id", vil søkenøkkelen være de faktiske "client_id"-verdiene. Hver unik numerisk verdi i den indekserte kolonnen fungerer som en nøkkel i B-tre-indeksen, noe som gjør det enklere å finne og hente de tilsvarende radene i database tabellen.

Fordeler og ulemper

I motsetning til den vanlige datastrukturen Binært Søk-tre, kan B-tre-noder ha mer enn 2 barn. Maksimalt antall barn per node er vanligvis satt til 16.

Indeksimplementering

For å opprette en B-tre-indeks på en kolonne i PostgreSQL, kan du bruke følgende SQL-kommando:

CREATE INDEX index_name ON table_name USING BTREE (column_name1, column_name2,...);

Siden B-tre-indeksen er en standardindeks i SQL, kan vi også bruke følgende setning for å opprette den:

CREATE INDEX index_name ON table_name(column_name1, column_name2,..);
Note
Merk

I SQL, når du oppretter en tabell med en primærnøkkelbegrensning, vil de fleste databasesystemer automatisk opprette en indeks på kolonnen(e) som er angitt i primærnøkkelen. Denne indeksen bidrar til å håndheve unikhetskravet til primærnøkkelen og forbedrer også ytelsen til spørringer som involverer søk eller sammenkobling basert på primærnøkkelkolonnen(e).

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 2
some-alt