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

È sicuro inserire un indice su una tabella temporanea Oracle?

Presumo che stiamo parlando di GLOBAL TEMPORARY tabelle.

Pensa a una tabella temporanea come a più tabelle che vengono create e eliminate al volo da ogni processo da un modello memorizzato nel dizionario di sistema .

In Oracle , DML di una temporary table interessa tutti i processi, mentre i dati contenuti nella tabella influenzeranno solo un processo che li utilizza.

Dati in una temporary table è visibile solo all'interno dell'ambito della sessione. Usa TEMPORARY TABLESPACE per memorizzare sia i dati che i possibili indici.

DML per una temporary table (cioè il suo layout, inclusi i nomi delle colonne e gli indici) è visibile a tutti coloro che dispongono di privilegi sufficienti.

Ciò significa che esistenza dell'indice influenzerà il tuo processo così come altri processi che utilizzano la tabella nel senso che qualsiasi processo che modifica i dati nella temporary table dovrà anche modificare l'indice.

Dati contenuti nella tabella (e anche nell'indice), al contrario, influenzeranno solo il processo che li ha creati e non saranno nemmeno visibili ad altri processi.

SE vuoi che un processo utilizzi l'indice e un altro che non lo usi, procedi come segue:

  • Crea due temporary tables con la stessa disposizione delle colonne
  • Indice su uno di essi
  • Utilizza tabelle indicizzate o non indicizzate a seconda del processo