es muy beneficioso almacenar datos en tablas temporales de SQL Server en lugar de manipular o trabajar con tablas permanentes. Supongamos que desea Acceso DDL o DML completo a una tabla, pero no lo tiene. Puede usar el acceso de lectura existente para extraer los datos en una tabla temporal de SQL Server y realizar ajustes desde allí. O si no tiene permisos para crear una tabla en la base de datos existente, puede crear una tabla temporal de SQL Server que puede manipular., Finalmente, es posible que se encuentre en una situación en la que necesite que los datos sean visibles solo en la sesión actual.
SQL Server admite algunos tipos de tablas temporales de SQL Server que pueden ser muy útiles.
antes de Continuar, si desea seguir junto con cualquier muestra de código, le sugiero abrir SQL Server Management Studio:
local SQL temp tables
Local SQL Server temp tables are created using the pound symbol or» hashtag » followed by the table name. Por ejemplo: #Table_name. Las tablas temporales SQL se crean en la base de datos tempdb., Una tabla temporal local de SQL Server solo es visible para la sesión actual. No puede ser visto o utilizado por procesos o consultas fuera de la sesión en la que se declara.
Aquí hay un ejemplo rápido de tomar un conjunto de resultados y ponerlo en una tabla temporal de SQL Server.
uno de los escenarios más utilizados para las tablas temporales de SQL Server está dentro de un bucle de algún tipo. Por ejemplo, desea procesar datos para una instrucción SQL y necesita un lugar para almacenar elementos para que el bucle los lea. Proporciona un medio rápido y eficiente para hacerlo., Vea el ejemplo de código anterior, su bucle Ahora puede hacer referencia a la tabla temporal de SQL Server y procesar los registros que cumplen con los criterios de su objetivo.
otra razón para usar tablas temporales de SQL Server es que tiene que realizar un procesamiento exigente en su instrucción sql. Digamos que creas una unión, y cada vez que necesitas extraer registros de ese conjunto de resultados tiene que procesar esta unión de nuevo. ¿Por qué no procesar este conjunto de resultados una vez y lanzar los registros en una tabla temporal SQL? Luego puede hacer que el resto de la instrucción sql se refiera al nombre de la tabla Temp de SQL., Esto no solo ahorra en el costoso procesamiento de consultas, sino que incluso puede hacer que su código se Vea un poco más limpio.
Hay un punto que quiero hacer sin embargo. Si la sesión en la que estamos trabajando tiene sesiones anidadas posteriores, las tablas temporales de SQL Server serán visibles en las sesiones inferiores en la jerarquía, pero no por encima de la jerarquía. Por favor, permítame visualizar esto.
en este diagrama rápido, se crea una tabla temporal SQL en la Sesión 2. Las sesiones debajo de ella (sesiones 3 y Sesión 4) son capaces de ver la tabla temp de SQL Server., Pero la Sesión 1, que está por encima de la sesión 2, no podrá ver la tabla temporal de SQL Server.
la tabla temporal SQL se elimina o destruye una vez que la sesión se desconecta. Muchas veces verás que los desarrolladores usan el comando «DROP # Table_Name» al final de su instrucción solo para limpiar. Pero depende completamente de ti y de lo que estás tratando de lograr.,
también tenga en cuenta que en caso de conflicto de nombres (recuerde que las tablas temporales de SQL Server se crean en tempdb) SQL server agregará un sufijo al final del nombre de la tabla para que sea única dentro de la base de datos tempdb. Pero este proceso es transparente para el desarrollador/usuario. Puede usar el mismo nombre que declaró, ya que está limitado a esa sesión.
tablas temporales globales de SQL
las tablas temporales globales de SQL son útiles cuando desea que el conjunto de resultados sea visible para todas las demás sesiones. No es necesario configurar permisos., Cualquiera puede insertar valores, modificar o recuperar registros de la tabla. También tenga en cuenta que cualquiera puede dejar caer la tabla. Al igual que las tablas temporales locales de SQL Server, se eliminan una vez que la sesión se desconecta y ya no hay más referencias a la tabla. Siempre puede usar el comando» DROP » para limpiarlo manualmente. Que es algo que recomendaría.
para crear una tabla temporal SQL global, simplemente use dos símbolos De Libra delante del nombre de la tabla. Ejemplo: ##Global_Table_Name.,
Variables de tabla
las variables de tabla se crean como cualquier otra variable, utilizando la instrucción DECLARE. Muchos creen que las variables de tabla existen solo en la memoria, pero eso simplemente no es cierto. Residen en la base de datos tempdb al igual que las tablas temporales locales de SQL Server. También al igual que las tablas temporales SQL locales, las variables de tabla solo son accesibles dentro de la sesión que las creó. Sin embargo, a diferencia de las tablas temporales SQL, la variable de tabla solo es accesible dentro del lote actual. No son visibles fuera del Lote, lo que significa que el concepto de jerarquía de sesión puede ser algo ignorado.,
en lo que respecta al rendimiento, las variables de tabla son útiles con pequeñas cantidades de datos (como solo unas pocas filas). De lo contrario, una tabla temporal de SQL Server es útil cuando se tamizan grandes cantidades de datos. Por lo tanto, para la mayoría de los scripts, lo más probable es que vea el uso de una tabla temporal de SQL Server en lugar de una variable de tabla. Por no decir que uno es más útil que el otro, es solo que tienes que elegir la herramienta adecuada para el trabajo.
Aquí hay un ejemplo rápido de configuración y uso de una variable de tabla.,
hemos creado una variable de tabla que contiene información sobre las cantidades totales de un determinado producto vendido. Este es un ejemplo muy simplificado, y no lo usaríamos si contuviera muchas filas. Pero si solo estuviéramos mirando unos pocos productos esto podría muy bien. Una vez que la variable de tabla se rellena, puede unirse a esta como una tabla a otra tabla y recopilar cualquier información que necesite. Así que hay mucha flexibilidad y permite al desarrollador ser bastante creativo.
también, en una nota final, en términos de transacciones sobre variables de tabla., Si un desarrollador revierte una transacción que incluye cambios en las variables de tabla, los cambios realizados en las variables de tabla dentro de esta transacción en particular permanecerán intactos. Es decir, otras partes de esta transacción en cuestión se revertirán, pero cualquier cosa que haga referencia a la variable de tabla no lo hará, a menos que esa parte de su script esté en error.,
- Autor
- mensajes Recientes
ver todos los mensajes de Aamir Syed
- Es SQL Server siempre Cifrado, para el cifrado de datos confidenciales, adecuado para su entorno – 27 de julio de 2018
- casos de uso para el almacén de consultas en SQL Server – 18 de julio de 2018
- cuándo usar tablas temporales SQL vs. variables de tabla – 21 de febrero de 2017