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

Je bezpečné umístit index na dočasnou tabulku Oracle?

Předpokládám, že mluvíme o GLOBAL TEMPORARY tabulky.

Představte si dočasnou tabulku jako více tabulek, které jsou vytvářeny a rušeny každým procesem za chodu ze šablony uložené v systémovém slovníku .

V Oracle , DML temporary table ovlivňuje všechny procesy, zatímco data obsažená v tabulce ovlivní pouze jeden proces, který je používá.

Data v temporary table je viditelný pouze v rámci relace. Používá TEMPORARY TABLESPACE k ukládání dat i případných indexů.

DML pro temporary table (tj. jeho rozložení, včetně názvů sloupců a indexů) je viditelné pro každého s dostatečnými oprávněními.

To znamená, že existence indexu ovlivní váš proces i další procesy používající tabulku v tom smyslu, že jakýkoli proces, který upravuje data v temporary table bude také muset upravit index.

Data obsažené v tabulce (a také v indexu) naopak ovlivní pouze proces, který je vytvořil, a nebude ani viditelné pro ostatní procesy.

Pokud chcete, aby jeden proces index používal a jiný jej nepoužíval, proveďte následující:

  • Vytvořte dvě temporary table se stejným rozložením sloupců
  • Indexujte jeden z nich
  • V závislosti na procesu použijte indexovanou nebo neindexovanou tabulku


  1. ERROR 1005 (HY000):Nelze vytvořit tabulku x (chyba:-1)

  2. Jak převést závislý poddotaz na spojení pro lepší výkon?

  3. Problém pro vložení pomocí psycopg

  4. PHP PDO připravené výpisy