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

Oracle:Jeden vícesloupcový index nebo dva jednosloupcové indexy

Záleží na...

Je docela nepravděpodobné, že se index nachází pouze na column1 bude užitečné, pokud již máte složený index na column1, column2 . Od column1 je hlavní index, dotazy na tabulku, které mají pouze column1 jako predikát bude moci používat složený index. Pokud často spouštíte dotazy, které potřebují provést úplnou kontrolu indexu a přítomnost column2 podstatně zvětšuje velikost indexu, je možné, že index právě na column1 by bylo efektivnější, protože úplné indexové skenování by muselo provádět méně I/O. Ale to je dost neobvyklá situace.

Index pouze ve column2 může být užitečné, pokud některé z vašich dotazů na tabulku specifikují predikáty pouze na column2 . Pokud existuje relativně málo různých hodnot column1 , je možné, že by Oracle mohl provést skenování přeskočení indexu pomocí složeného indexu, aby uspokojil dotazy, které specifikují pouze column2 jako predikát. Skenování přeskakováním však bude pravděpodobně mnohem méně efektivní než skenování rozsahu, takže je přiměřeně pravděpodobné, že index pouze ve column2 by tyto dotazy prospěly. Pokud existuje velký počet různých hodnot pro column1 , skenování přeskakování by bylo ještě méně efektivní a index by byl pouze na column2 by bylo prospěšnější. Samozřejmě, pokud se nikdy nedotazujete na tabulku pomocí column2 bez uvedení predikátu na column1 , nepotřebujete index pouze na column2 .



  1. Ruby a MySQL znaky UTF-8

  2. Vyplňte náhodná data z jiné tabulky

  3. Maximální využití paměti MySQL

  4. Jak najít parametry v dotazu Oracle přijatém z v$sql?