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