Te damos la bienvenida a nuestro sitio web, aquí vas a encontrar la resolución que necesitas.
Solución:
Hay un buen artículo de Craig S. Mullins que cubre las principales diferencias entre los dos. Para la mayoría de los propósitos, funcionan igual.
Las tablas temporales creadas se crean en DSNDB07
, que es la base de datos del archivo de trabajo (la misma área de almacenamiento utilizada durante las sentencias SQL que necesitan almacenamiento de trabajo). Las tablas temporales declaradas se almacenan en un espacio de tabla temporal que debe crear.
Hay algunas desventajas para los CTT:
Debido a que no son persistentes, algunas operaciones típicas de la base de datos, como el bloqueo, el registro y la recuperación, no se aplican a las tablas temporales creadas.
No se pueden crear índices en tablas temporales creadas, por lo que todo el acceso se realiza mediante un escaneo completo de la tabla.
No se pueden crear restricciones en tablas temporales creadas.
A null es el único valor predeterminado permitido para las columnas de una tabla temporal creada.
Las utilidades de DB2 no pueden hacer referencia a las tablas temporales creadas.
Las tablas temporales creadas no se pueden especificar como el objeto de una instrucción UPDATE.
Al eliminar de una tabla temporal creada, se deben eliminar todas las filas.
Aunque las vistas se pueden crear en tablas temporales creadas, no se puede especificar la OPCIÓN CON CHEQUEO.
La TDT suele ser mucho más flexible:
Las tablas temporales declaradas pueden tener índices y restricciones CHECK definidas en ellas.
Puede emitir sentencias UPDATE y posicionar sentencias DELETE contra una tabla temporal declarada.
Puede definir implícitamente las columnas de una tabla temporal declarada y usar la tabla de resultados de un SELECT.
Ahora para sus preguntas numeradas:
1. y 2. No hay uno. Creo (y no estoy 100% seguro de si esto es correcto, nuestra tienda usa DTT prácticamente en todos los casos) que un CTT se declara una vez (por un DBA), y luego los programadores de aplicaciones pueden usarlo en cualquier sesión. Cada conexión tendrá su propia copia, y una vez que la aplicación se desconecte, los datos almacenados en ese CTT en esa sesión desaparecerán.
3. SESSION
es solo el identificador de esquema para DTT. Se nota que es una tabla temporal que no persiste.
4. Creo que ambos tendrán el mismo desempeño. Serán más rápidos que las tablas normales, porque no se aplicarán el bloqueo, el registro, la recuperación, etc.
5. En general, diría que los TDT son el camino a seguir, pero los CTT son útiles (como dice Craig en su artículo):
(CTT) deben considerarse principalmente cuando no se necesita actualizar los datos temporales y el acceso a los datos temporales es puramente secuencial.