2010-11-07 23 views

Respuesta

12

El escenario más común para usar tablas temporales es dentro de un procedimiento almacenado.

Si hay una lógica dentro de un procedimiento almacenado que implica la manipulación de datos que no se pueden realizar en una sola consulta, entonces en esos casos, el resultado de una consulta/resultados intermedios se puede almacenar en una tabla temporal que luego participa en más manipulación a través de combinaciones, etc. para lograr el resultado final.

Un escenario común en el uso de tablas temporales es almacenar los resultados de una instrucción SELECT INTO

La variable de tabla es relativamente nuevo (introdujo en SQL Server 2005 - Por lo que yo puedo recordar) se puede utilizar en lugar de la tabla de temperatura en la mayoría de los casos. Algunas diferencias entre los dos se discuten here

En muchos casos, especialmente en aplicaciones OLTP, uso de tablas temporales dentro de sus procedimientos significa que MAYO posiblemente tiene lógica de procesamiento de negocio en su base de datos y puede ser una consideración para usted puede volver a mirar su diseño, especialmente en el caso de sistemas de n niveles que tengan una capa de negocios separada en su aplicación.

9

La principal diferencia entre los tres es una cuestión de vida y alcance.

En una tabla global, asumo que se refiere a una tabla estándar, ejecutada del molino. Las tablas se usan para almacenar datos persistentes. Son accesibles para todos los usuarios que inician sesión. Cualquier cambio que realice será visible para otros usuarios y viceversa.

Existe una tabla temporal únicamente para almacenar datos dentro de una sesión. El mejor momento para usar tablas temporales es cuando necesita almacenar información dentro del servidor SQL para usarla en varias transacciones SQL. Al igual que una tabla normal, la creará, interactuará con ella (insertar/actualizar/eliminar) y cuando termine, la dejará caer. Hay dos diferencias entre una tabla y una tabla temporal.

  1. La tabla temporal solo es visible para usted. Incluso si alguien más crea una tabla temporal con el mismo nombre, nadie más podrá ver o afectar su tabla temporal.
  2. La tabla temporal existe mientras esté conectado, a menos que la elimine explícitamente. Si cierra sesión o está desconectado, SQL Server lo limpiará automáticamente. Esto también significa que los datos no son persistentes. Si crea una tabla temporal en una sesión y cierra la sesión, no estará allí cuando vuelva a iniciar sesión.

Una variable de tabla funciona como cualquier variable dentro de SQL Server. Esto se utiliza para almacenar datos para su uso en una sola transacción. Esta es una característica relativamente nueva de TSQL y generalmente se usa para pasar datos entre procedimientos, como pasar una matriz. Hay tres diferencias entre una tabla y una variable de tabla.

  1. Como una tabla temporal, solo es visible para usted.
  2. Como es una variable, se puede pasar entre procedimientos almacenados.
  3. La tabla temporal solo existe dentro de la transacción actual.Una vez que SQL Server finaliza una transacción (con las instrucciones GO o END TRANSACTION) o queda fuera del alcance, será desasignado.

Personalmente evito el uso de tablas temporales y variables de tabla, por algunas razones. Primero, la sintaxis para ellos es específica de Microsoft. Si su programa va a interactuar con más de un RDBMS, no los use. Además, las tablas temporales y las variables de tabla tienden a aumentar la complejidad de algunas consultas SQL. Si su código se puede lograr utilizando un método más simple, recomendaría ir con simple.

Cuestiones relacionadas