Jeg går ud fra, at vi taler om GLOBAL TEMPORARY tabeller.
Tænk på en midlertidig tabel som på flere tabeller, der oprettes og slettes af hver proces på farten fra en skabelon gemt i systemordbogen .
I Oracle , DML af en temporary table påvirker alle processer, mens data indeholdt i tabellen kun vil påvirke én proces, der bruger dem.
Data i en temporary table er kun synlig inden for sessionsomfanget. Den bruger TEMPORARY TABLESPACE til at gemme både data og mulige indekser.
DML for en temporary table (dvs. dets layout, inklusive kolonnenavne og indekser) er synlig for alle med tilstrækkelige privilegier.
Det betyder, at eksistens af indekset vil påvirke din proces såvel som andre processer, der bruger tabellen i den forstand, at enhver proces, der ændrer data i den temporary table bliver også nødt til at ændre indekset.
Data indeholdt i tabellen (og også i indekset), vil tværtimod kun påvirke den proces, der skabte dem, og vil ikke engang være synlige for andre processer.
HVIS du ønsker, at en proces skal bruge indekset, og en anden ikke skal bruge det, skal du gøre følgende:
- Opret to
temporary tablesmed samme kolonnelayout - Indeks på en af dem
- Brug indekseret eller ikke-indekseret tabel afhængigt af processen