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

Jak a kdy se indexy používají v operacích INSERT a UPDATE?

U příkazů UPDATE může optimalizátor použít index, pokud usoudí, že index jej může urychlit. Index by se použil k vyhledání řádků, které mají být aktualizovány. Index je svým způsobem také tabulka, takže pokud se indexovaný sloupec aktualizuje, musí samozřejmě také AKTUALIZOVAT index. Na druhou stranu, pokud spouštíte aktualizaci bez klauzule WHERE, může se optimalizátor rozhodnout nepoužít index, protože musí mít přístup k celé tabulce, může být úplné prohledání tabulky efektivnější (ale možná bude muset index aktualizovat ). Optimalizátor provádí tato rozhodnutí za běhu na základě několika parametrů, jako například zda existují platné statistiky pro příslušné tabulky a indexy, kolik dat je ovlivněno, jaký typ hardwaru atd.

U příkazů INSERT, ačkoli samotný INSERT index nepotřebuje, bude také nutné index 'vložit do', takže k němu bude muset přistupovat oracle. Dalším případem, kdy INSERT může způsobit použití indexu, je INSERT takto:

INSERT INTO mytable (mycolmn)
SELECT mycolumn + 10 FROM mytable;


  1. Mysql group_concat opakovaných klíčů a počet opakování více sloupců v 1 dotazu ( optimalizace dotazu )

  2. Jak aktualizovat sadu ID z 1?

  3. postgresql 9.1 - přístup k tabulkám pomocí funkcí

  4. Získejte každou hodinu pro určitý časový rozsah