sql >> Database >  >> RDS >> Oracle

Is het veilig om een ​​index op een tijdelijke Oracle-tabel te plaatsen?

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


  1. Postgresql trigger invoegen om waarde in te stellen

  2. Oracle's standaard datumnotatie is JJJJ-MM-DD, WAAROM?

  3. Variabele/letterlijke vervanging voor PL/SQL-cursors?

  4. Orde handhaven in MySQL IN-query