sql >> Databáze >  >> RDS >> Oracle

Připojení trvá příliš dlouho

Podíváme-li se na všechna zúčastněná pole, krycí rejstřík každé tabulky by zahrnoval mnoho sloupců

t1: Y, F, H, A
t2: X, G, C, D, E

Jak selektivní jsou JAKÉKOLI z kritérií:t2.X, t2.G nebo t1.Y, t1.F, t1.H?

Pokud žádný z jednotlivých sloupců není dostatečně selektivní (ideálně 0,5 % nebo méně), možná budete chtít vytvořit jeden nebo několik krycích indexů, které zahrnují více sloupců, například

t2 (G, X)
t1 (H, F, Y)

Poznámka: Pořadí sloupců v indexu je velmi důležité – vždy dávejte na první místo ten nejselektivnější (ten, který rozděluje data sloupců do nejodlišnějších sad).

Na úkor úložiště můžete zajistit, aby index POKRYTAL dotaz, a to poskytnutím všech nezbytných sloupců v samotném indexu. To znamená, že dotaz se vůbec nemusí vracet k datům tabulky.

create index ix_t2 on t2 (G,X) INCLUDE (C,D,E)
create index ix_t1 on t1 (H,F,Y) INCLUDE (A)

UPRAVIT

Vypadá to, že jsem tam vložil SQL Server DDL. V Oracle byste museli index rozšířit na t2 (G,X, C,D,E) – ale to zvyšuje požadavky na selektivitu pro použití indexu, protože indexový klíč je velmi dlouhý.




  1. Jak provést automatické zvýšení v PostgreSQL?

  2. Optimalizujte rozsah dotazu časového razítka Postgres

  3. Vrátí datové řádky z bloku pl/sql

  4. CHYBA 1406:1406:Data jsou příliš dlouhá pro sloupec, ale neměla by být?