Částečný index - Partial index
v databáze, a částečný index, také známý jako filtrovaný index je index který má nějakou podmínku aplikovanou na to tak, že zahrnuje podmnožinu řádky v stůl.
To umožňuje, aby index zůstal malý, přestože tabulka může být poměrně velká a extrémně selektivní.
Předpokládejme, že máte tabulku transakcí, kde položky začínají STATUS = 'A' (aktivní) a poté mohou projít jinými stavy ('P' pro nevyřízené, 'W' pro "na kterých se pracuje"), než dosáhnou konečného stavu, „F“, kdy již pravděpodobně nebude znovu zpracováno.
V PostgreSQL může být užitečný částečný index definován jako:
vytvořit index částečný_stav na txn_table (postavení) kde postavení v ('A', 'P', 'W');
Tento index by se neobtěžoval ukládat žádný z milionů řádků, které dosáhly „konečného“ stavu „F“, a umožnil by efektivně vyhledávat prostřednictvím tohoto indexu dotazy hledající transakce, které stále „potřebují práci“.
Podobně lze použít částečný index k indexování pouze těch řádků, kde sloupec nemá hodnotu null, což bude výhodné, když bude sloupec obvykle null.
vytvořit index částečný_objekt_aktualizace na tabulka_objektu (updated_on) kde updated_on je ne nula;
Tento index by umožnil následujícímu dotazu číst pouze aktualizované n-tice:
vybrat * z tabulka_objektu kde updated_on je ne nula objednat podle updated_on;
Není nutné, aby podmínka byla stejná jako kritérium indexu; Stonebrakerův článek níže představuje řadu příkladů s indexy podobnými následujícím:
vytvořit index částečný plat na zaměstnanec(stáří) kde plat > 2100;
Podpěra, podpora
v SQL Server, tento typ indexu se nazývá a filtrovaný index.[1]Částečné indexy byly podporovány v PostgreSQL od verze 7.2, vydané v únoru 2002.[2]SQLite podporuje částečné indexy od verze 3.8.0.[3]
MongoDB podporuje dílčí indexy ve svém nejnovějším vydání V3.2.[4]
MySQL od verze 8.0 nepodporuje částečné indexy. V MySQL se termín „částečný index“ někdy používá k označení předponových indexů, kde je v indexu uložena pouze zkrácená předpona každé hodnoty. Toto je další technika pro zmenšení velikosti indexu.[5]
Reference
- ^ Dokumentace k serveru SQL Server 2008: Pokyny k návrhu filtrovaného indexu. Microsoft TechNet.
- ^ „Dokumentace PostgreSQL: Poznámky k verzi: Verze 7.2“. PostgreSQL. Citováno 2009-10-09.
Povolit částečné indexy (Martijn van Oosterhout)
- ^ "Částečné indexy". Citováno 2014-02-04.
- ^ Poznámky k verzi MongoDB V302.
- ^ Ronald Bradford (2009-07-22). „Pochopení různých implementací indexu MySQL“.