Oracle
Indexy 's nejsou nikdy "nevyvážené":každý list v indexu je ve stejné hloubce jako kterýkoli jiný list.
Žádné rozdělení stránky samo o sobě nezavádí novou úroveň:listová stránka se nestane rodičem pro nové stránky, jako by tomu bylo u stromu, který se nevyrovnává.
Místo toho se vytvoří sourozenec pro rozdělenou stránku a nový záznam (plus možná některé záznamy ze staré stránky) přejde na novou stránku. Do nadřazené stránky se přidá ukazatel na novou stránku.
Pokud nadřazená stránka také nemá místo (nemůže přijmout ukazatel na nově vytvořenou listovou stránku), rozdělí se také a tak dále.
Tato rozdělení se mohou šířit až ke kořenové stránce, jejíž rozdělení je jediná věc, která zvyšuje hloubku indexu (a dělá to pro všechny stránky najednou).
Indexové stránky jsou navíc organizovány do dvojitě propojených seznamů, každý seznam na své vlastní úrovni. To by nebylo možné, pokud by strom nebyl vyvážený.
Pokud master_id
je automaticky inkrementováno, to znamená, že všechna rozdělení nastanou na konci (např. 90/10
splits), což umožňuje nejhustší index.
Ne, nebylo by to z výše uvedených důvodů.
Pokud se připojíte k slave
master
často můžete zvážit vytvoření CLUSTER
ze dvou tabulek, indexovaných pomocí master_id
. To znamená, že záznamy z obou tabulek sdílejí stejné master_id
, přejděte na stejné nebo blízké datové stránky, díky čemuž je spojení mezi nimi velmi rychlé.
Když motor našel záznam z master
, s indexem nebo čímkoli, to také znamená, že již našel záznamy z slave
být spojen s tímto master
. A naopak, vyhledání slave
také znamená umístění jeho master
.