sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuál es la diferencia entre TABLA TEMPORAL y TABLA VARIABLE en SQL 2008?

Las tablas temporales son como tablas ordinarias en la mayoría de las características, excepto que van a TempDB en lugar de a la base de datos actual, y desaparecen después de un alcance limitado (dependiendo de si son tablas temporales basadas en sesión o globales). Pero todos los cambios en los datos en las tablas temporales son registrado en el registro de transacciones, con todas las implicaciones de rendimiento que eso conlleva. También puede agregar tantos índices o vistas, o disparadores, o cualquier otra cosa que desee a una tabla temporal exactamente como lo haría con una tabla normal.

Las variables de tabla son una especie de tabla en memoria de acceso directo (también usan base de datos temporal). Los cambios en ellos no se registran (esto mejora el rendimiento). Pero solo puede obtener un índice en ellos (debido a que los índices no se pueden crear después de la declaración de declaración inicial, el único índice que puede crear en una variable de tabla es el que se puede incluir en la declaración de variable de tabla inicial...

   Declare @Tab Table (myKey integer Primary Key Not Null, data varchar(20)) 

Debido a estas características, las tablas temporales son una mejor opción para tablas grandes (anchas y con muchas filas) y/o que sufrirán más de un patrón de acceso durante su vida útil, mientras que las variables de tabla son mejores cuando se necesita una tabla muy estrecha ( tabla de solo claves, o clave con una sola columna de datos), a la que siempre se accederá mediante esa clave indexada...