Está en la página 1de 2

1. ¿Qué es una temporal?

Las tablas temporales nos habilitan la posibilidad de recuperar datos de cualquier


punto en el pasado y por cada cambio de datos (Actualizar, Eliminar, Combinar). Con
la tabla temporal, los usuarios pueden restaurar datos de cambios accidentales
(actualizar/eliminar), así como verificar todos los cambios en los datos, etc. La tabla
temporal es una nueva característica de SQL Server disponible desde la versión CTP2
de SQL Server 2016. Una tabla temporal se compone de dos partes (tablas), la
primera es la tabla en la que se habilita el seguimiento de datos y se llama una tabla
versión original del sistema, esta tabla contiene datos actuales (reales), la segunda
parte es la tabla en la que se almacenan los cambios de datos que se realizaron
(Actualizar, Eliminar, Combinar) en una tabla con versión del sistema y se llama tabla
de historial.
2. ¿Qué es una tabla tipo variable?
Las variables de tipo tabla es prácticamente una tabla como las que creas en tu base de
datos. Con la diferencia de que esta variable se crea al momento de ejecutar el query y
se elimina al terminar la ejecución. Por lo tanto, son tablas que se crean en memoria,
aunque en comparación con las tablas temporales, estas están optimizadas.
3. Que diferencia existe entre una tabla temporal y una tabla tipo variable.
● Las tablas temporales son en realidad tablas por lo que se pueden hacer cosas
como CREATE INDEXes, etc. Si manipulas grandes cantidades de datos para
las que el acceso por índice será más rápido que las tablas temporales, estas
son una buena opción.
● Las variables de tabla pueden tener índices mediante el uso de restricciones
PRIMARY KEY o UNIQUE. (Si quieres un índice no único basta con incluir
la columna de clave primaria (primary key) como la última columna en la
restricción única. Si usted no tiene una columna única, puede utilizar una
columna de identidad.) SQL 2014 contiene índices no únicos también.
● Las variables de tabla no participan en las transacciones, registro o de bloqueo
(logging or locking). Esto significa que son más rápidas, ya que no requieren
la sobrecarga, pero por el contrario no te dan esas características. Así, por
ejemplo, si desea restaurar (ROLLBACK) a medio camino a través de un
procedimiento, ¡entonces las variables de tabla pobladas durante esa
transacción seguirán estando pobladas!
● Tablas temporales podrían dar lugar a Stored Procedures recompilados. Las
variables de tabla no.
● Puedes crear una tabla temporal utilizando SELECT INTO, que puede ser más
rápido para escribir (bueno para un ad-hoc de consulta) y puede permitir lidiar
con el cambio de tipos de datos a través del tiempo, ya que no es necesario
definir la estructura de su tabla temporal por adelantado.
4. Nombre algunas ventajas y desventajas de cada una.
Ventajas de las tablas temporales:
● Las tablas temporales pueden indexarse, pueden tener índices / restricciones
ÚNICOS.
● Pueden ser referencias más de una vez en la misma consulta.
● Pueden ser referenciadas (DESDE O UNIRSE) por más de una consulta. Se
puede hacer referencia a las tablas derivadas (FROM o JOIN) una vez en una
consulta.
Desventajas de las tablas temporales:
● Las tablas temporales se crean en el tempdb y al crearlas se producen bloqueos
sobre esta base de datos como por ejemplo en las tablas sysobjects y
sysindexes. Los bloqueos sobre el la tempdb afectan a todo el servidor.
● Al insertar y consultar se produce operaciones de I/O sobre el disco (Los
accesos al disco suelen ser los cuellos de botella del sistema).
● Al borrar la tabla de nuevo hay que adquirir bloqueos sobre la base de datos
tempdb y realizar operaciones en disco.
● Si la consulta dentro de un procedimiento almacenado tiene una tabla temporal
difícilmente se reutilizará el plan de ejecución.
Ventajas de las variables tipo tabla:
● Las variables de tabla se comportan como variables locales, con un alcance
bien definido. El alcance es la función, el procedimiento almacenado o el lote
que declara la variable. Dentro de su alcance, las variables de tabla se pueden
usar como tablas normales. Esta variable se puede usar en las instrucciones
SELECT, INSERT, UPDATE y DELETE donde se usa una tabla o expresión
de tabla.
● El uso de variables de tabla en procedimientos almacenados reduce la cantidad
de compilación de procedimientos almacenados en comparación con el uso de
tablas temporales.
Desventajas de las variables tipo tabla:
● Una vez que haya declarado una variable de tabla, no puede agregar, cambiar
el nombre o eliminar columnas, ni puede crearlas sobre la marcha usando el
comando SELECT INTO
● No puede hacer referencia a una variable de tabla desde fuera de su alcance.

También podría gustarte