Ik neem aan dat we het hebben over GLOBAL TEMPORARY
tabellen.
Denk aan een tijdelijke tabel als aan meerdere tabellen die door elk proces on-the-fly worden gemaakt en verwijderd uit een sjabloon die is opgeslagen in het systeemwoordenboek .
In Oracle
, DML
van een temporary table
beïnvloedt alle processen, terwijl gegevens in de tabel slechts één proces beïnvloeden dat ze gebruikt.
Gegevens in een temporary table
is alleen zichtbaar binnen het sessiebereik. Het gebruikt TEMPORARY TABLESPACE
om zowel gegevens als mogelijke indexen op te slaan.
DML
voor een temporary table
(d.w.z. de lay-out, inclusief kolomnamen en indexen) is zichtbaar voor iedereen met voldoende privileges.
Dit betekent dat bestaan van de index heeft invloed op uw proces en op andere processen die de tabel gebruiken, in die zin dat elk proces dat gegevens in de temporary table
wijzigt zal ook de index moeten wijzigen.
Gegevens in de tabel (en ook in de index), daarentegen, heeft alleen invloed op het proces dat ze heeft gemaakt en is zelfs niet zichtbaar voor andere processen.
ALS u wilt dat één proces de index gebruikt en een ander proces niet, doet u het volgende:
- Maak twee
temporary tables
met dezelfde kolomindeling - Index op een van hen
- Gebruik geïndexeerde of niet-geïndexeerde tabel, afhankelijk van het proces