sql >> Database teknologi >  >> RDS >> Oracle

Er det sikkert at sætte et indeks på en midlertidig Oracle-tabel?

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 tables med samme kolonnelayout
  • Indeks på en af ​​dem
  • Brug indekseret eller ikke-indekseret tabel afhængigt af processen


  1. Mysql Split streng og vælg med resultater

  2. hvordan man overfører variabel fra shell-script til sqlplus

  3. Hvordan får man et Shell-script til at fortsætte efter genstart?

  4. Javascript mærkelig generator udbytte underfunktion adfærd