Ich nehme an, wir sprechen von GLOBAL TEMPORARY
Tabellen.
Stellen Sie sich eine temporäre Tabelle als mehrere Tabellen vor, die von jedem Prozess spontan aus einer im Systemwörterbuch gespeicherten Vorlage erstellt und gelöscht werden .
In Oracle
, DML
einer temporary table
wirkt sich auf alle Prozesse aus, während die in der Tabelle enthaltenen Daten nur einen Prozess betreffen, der sie verwendet.
Daten in einer temporary table
ist nur innerhalb des Sitzungsbereichs sichtbar. Es verwendet TEMPORARY TABLESPACE
um sowohl Daten als auch mögliche Indizes zu speichern.
DML
für eine temporary table
(d. h. sein Layout, einschließlich Spaltennamen und Indizes) ist für jeden mit ausreichenden Rechten sichtbar.
Das bedeutet, dass Existenz des Index wirkt sich sowohl auf Ihren Prozess als auch auf andere Prozesse aus, die die Tabelle verwenden, in dem Sinne, dass jeder Prozess, der Daten in der temporary table
ändert müssen auch den Index ändern.
Daten die in der Tabelle (und auch im Index) enthalten sind, wirken sich dagegen nur auf den Prozess aus, der sie erstellt hat, und sind nicht einmal für andere Prozesse sichtbar.
WENN Sie möchten, dass ein Prozess den Index verwendet und ein anderer ihn nicht verwendet, gehen Sie wie folgt vor:
- Erstellen Sie zwei
temporary tables
mit gleichem Spaltenlayout - Index auf einem von ihnen
- Indizierte oder nicht indizierte Tabelle je nach Prozess verwenden