sql >> Base de Datos >  >> RDS >> Oracle

¿Es seguro poner un índice en una tabla temporal de Oracle?

Supongo que estamos hablando de GLOBAL TEMPORARY mesas.

Piense en una tabla temporal como si fueran varias tablas que cada proceso crea y elimina sobre la marcha a partir de una plantilla almacenada en el diccionario del sistema .

En Oracle , DML de una temporary table afecta a todos los procesos, mientras que los datos contenidos en la tabla afectarán solo a un proceso que los utiliza.

Datos en una temporary table es visible solo dentro del alcance de la sesión. Utiliza TEMPORARY TABLESPACE para almacenar tanto datos como posibles índices.

DML para una temporary table (es decir, su diseño, incluidos los nombres de las columnas y los índices) es visible para todos los que tienen suficientes privilegios.

Esto significa que existencia del índice afectará a su proceso, así como a otros procesos que utilicen la tabla, en el sentido de que cualquier proceso que modifique datos en la temporary table también habrá que modificar el índice.

Datos contenidos en la tabla (y también en el índice), por el contrario, afectarán solo al proceso que los creó, y ni siquiera serán visibles para otros procesos.

SI desea que un proceso use el índice y otro no, haga lo siguiente:

  • Cree dos temporary tables con el mismo diseño de columna
  • Índice de uno de ellos
  • Usar tablas indexadas o no indexadas según el proceso