Interaktiivne õppevahend andmebaasisüsteemide sisemise töö mõistmiseks.
CREATE TABLE Tellimus (
tellimus_id INTEGER GENERATED ALWAYS AS IDENTITY,
klient_kood INTEGER NOT NULL,
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
);
Tabelitel on defineeritud primaarvõtmed, mis loovad automaatselt B+ puu indeksid (Clustered Index).
tellimus_id järgi.tellimus_id (ja seejärel kaup_kood) järgi.See tähendab, et andmebaas saab andmeid lugeda otse B+ puu lehtedelt (Leaf Nodes) juba sorteeritud kujul.
Võtab välisest tabelist rea ja otsib sisemisest vastet.
| tellimus_id | klient_kood |
|---|
| tellimus_id | kaup_kood | kogus |
|---|
| tellimus_id | klient_kood | kaup_kood | kogus |
|---|
Liigub mööda kahte sorteeritud nimekirja paralleelselt.
tellimus_id peal B+ puu indeks (primaarvõti), on andmed juba ketastel sorteeritud. Andmebaas teeb Index Scan (loeb B+ puu lehti järjest), seega eraldi sorteerimist pole vaja.
| tellimus_id | klient_kood |
|---|
| tellimus_id | kaup_kood | kogus |
|---|
| tellimus_id | klient_kood | kaup_kood | kogus |
|---|
Loob mälus räsitabeli ja skaneerib teist tabelit.
kaup_kood (mitte primaarvõti), ei saa B+ puu otsingut tõhusalt kasutada. Andmebaas teeb tõenäoliselt Full Scan (loeb kõik indeksi lehed läbi), et leida 'K002' ja ehitada räsitabel.
| tellimus_id | kaup_kood | kogus |
|---|
| tellimus_id | klient_kood |
|---|
| tellimus_id | klient_kood |
|---|