Částečný index - Partial index
V databázích , je dílčí index , také známý jako filtrované index je index , který má určitý stav aplikované tak, že obsahuje podmnožinu řádků v tabulce .
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:
create index partial_status on txn_table (status)
where status in ('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.
create index partial_object_update on object_table (updated_on)
where updated_on is not null;
Tento index by umožnil následujícímu dotazu číst pouze aktualizované n-tice:
select * from object_table
where updated_on is not null
order by 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:
create index partial_salary on employee(age)
where salary > 2100;
Podpěra, podpora
Na serveru SQL Server se tento typ indexu nazývá filtrovaný index . Částečné indexy jsou v PostgreSQL podporovány od verze 7.2, vydané v únoru 2002. SQLite podporuje částečné indexy od verze 3.8.0.
MongoDB ve své nejnovější verzi V3.2 podporuje částečné indexy.
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.