Mis on B+ puu indeks?
B+ puu on andmestruktuur, mida andmebaasisüsteemid laialdaselt kasutavad indeksite loomiseks. Indeksid kiirendavad oluliselt andmete otsimist suurtest tabelitest. Ilma indeksita peaks andmebaas rea leidmiseks läbi vaatama kogu tabeli (Full Table Scan), mis on väga aeganõudev.
B+ puu on tasakaalustatud puu, mis tähendab, et tee juursõlmest mistahes lehesõlmeni on alati sama pikkusega. See tagab stabiilse ja kiire otsinguaja. Puu koosneb juursõlmest, vahesõlmedest ja lehesõlmedest.
- Vahesõlmed (Internal Nodes): Sisaldavad ainult võtmeid ja viitasid alampuudele. Need juhivad otsingut õige lehesõlme suunas.
- Lehesõlmed (Leaf Nodes): Sisaldavad indekseeritud veeru väärtuseid (võtmeid) ja viitasid tegelikele andmeridadele tabelis. Kõik lehesõlmed on omavahel seotud kahesuunalise ahellisti abil, mis teeb vahemikupäringud (nt
WHERE ID BETWEEN 10 AND 20) väga efektiivseks.
Näite skeem ja andmed
Selles näites kasutame kahte tabelit: Tellimus ja Tellimuse_rida. Mõlema tabeli primaarvõtmele luuakse automaatselt B+ puu indeks.
CREATE TABLE Tellimus (
tellimus_id INTEGER GENERATED ALWAYS AS IDENTITY,
klient_kood INTEGER NOT NULL,
tellimuse_seisundi_liik_kood SMALLINT NOT NULL DEFAULT 1,
CONSTRAINT pk_tellimus PRIMARY KEY (tellimus_id)
);
CREATE TABLE Tellimuse_rida (
tellimus_id INTEGER NOT NULL,
kaup_kood VARCHAR(10) NOT NULL,
kogus SMALLINT NOT NULL,
CONSTRAINT pk_tellimuse_rida PRIMARY KEY (tellimus_id, kaup_kood),
CONSTRAINT fk_tellimuse_rida_tellimus FOREIGN KEY (tellimus_id)
REFERENCES Tellimus (tellimus_id) ON DELETE CASCADE
);
Interaktiivne demonstratsioon
Vali päringu tüüp ja sisesta väärtused, et näha, kuidas andmebaas andmeid loeb.
pk_tellimuse_rida indeksist, ilma tabeliplokke puutumata.Päringu käivitamise logi
Vajuta "Käivita päring" nuppu, et näha, kuidas andmebaas andmeid loeb.