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