Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

É seguro colocar um índice em uma tabela temporária do Oracle?


Estou assumindo que estamos falando de GLOBAL TEMPORARY mesas.

Pense em uma tabela temporária como em várias tabelas que são criadas e descartadas por cada processo em tempo real a partir de um modelo armazenado no dicionário do sistema .

Em Oracle , DML de uma temporary table afeta todos os processos, enquanto os dados contidos na tabela afetarão apenas um processo que os utiliza.

Dados em uma temporary table é visível apenas dentro do escopo da sessão. Ele usa TEMPORARY TABLESPACE para armazenar dados e índices possíveis.

DML para uma temporary table (ou seja, seu layout, incluindo nomes de colunas e índices) é visível para todos com privilégios suficientes.

Isso significa que existência do índice afetará seu processo, bem como outros processos que usam a tabela no sentido de que qualquer processo que modifique dados na temporary table também terá que modificar o índice.

Dados contidos na tabela (e no índice também), pelo contrário, afetarão apenas o processo que os criou e nem serão visíveis para outros processos.

SE você quiser que um processo use o índice e outro não, faça o seguinte:
  • Crie duas temporary tables com o mesmo layout de coluna
  • Índice em um deles
  • Use tabela indexada ou não indexada dependendo do processo