No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Tablas temporales vs. tablas variables

23/31
Recursos

Aportes 6

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

  • Las Tablas temporales empiezan # y sólo están disponibles en tu sesión, si queremos que este disponibles para otras sesiones de manera global deben empezar con ##.
  • Cuando se cierra sesión las tablas se eliminan automáticamente aunque se recomienda eliminar la tabla cuando se termina el proceso.
  • Las tablas variables se crean en la bd tempdb.
  • Las tablas variables ejecutan por proceso, además que tienen menos bloqueos a nivel de base de datos.

Difiero un poco de lo que se dice en el video, pero como todo en el mundo de SQL Server depende de lo que necesitas y como se realice. El manejo de tablas temporales ayuda a agilizar en algunos casos los querys, no me ha ido también con las variables tipo tabla, son muy buenas con pocos datos.

https://www.sqlshack.com/es/cuando-utilizar-las-tablas-temporales-de-sql-frente-a-las-variables-de-tabla/

https://dbamemories.wordpress.com/2018/08/24/tablas-temporales-vs-variables-tipo-tabla/

En mi experiencia creo que el uso de las tablas temporales y/o variables, depende de la cantidad de datos con los que se va a trabajar, si la cantidad de datos es pequeña se deben usar tablas variables, de lo contrario, si la cantidad de datos es muy grande, es recomendable usar tablas temporales.

Yo he utilizado tablas temporales y me han funcionado muy bien, sobre todo para temas de reportería.

Ejemplo práctico de cómo se puede usar una tabla temporal en SQL Server.

Supongamos que tenemos una base de datos que contiene dos tablas: “Ventas” y “Clientes”. Queremos crear una consulta que muestre el total de ventas por cliente para el mes actual. En lugar de unir las dos tablas y luego agrupar y sumar los datos, podemos usar una tabla temporal para simplificar el proceso.

Aquí te dejo un ejemplo de cómo crear una tabla temporal y utilizarla para resolver este problema:

-- Creamos una tabla temporal para almacenar los datos
CREATE TABLE #TempVentas
(
    ClienteID INT,
    TotalVentas MONEY
);

-- Insertamos los datos en la tabla temporal
INSERT INTO #TempVentas (ClienteID, TotalVentas)
SELECT V.ClienteID, SUM(V.Monto) AS TotalVentas
FROM Ventas V
WHERE MONTH(V.Fecha) = MONTH(GETDATE())  -- Solo consideramos el mes actual
GROUP BY V.ClienteID;

-- Unimos la tabla temporal con la tabla de clientes para obtener los nombres de los clientes
SELECT C.Nombre, T.TotalVentas
FROM Clientes C
JOIN #TempVentas T ON C.ClienteID = T.ClienteID;

-- Eliminamos la tabla temporal
DROP TABLE #TempVentas;

En este ejemplo, creamos una tabla temporal llamada “#TempVentas” con dos columnas: “ClienteID” y “TotalVentas”. Luego, insertamos los datos de ventas agrupados por cliente para el mes actual en la tabla temporal. Después, unimos la tabla temporal con la tabla de clientes para obtener los nombres de los clientes y mostramos el resultado final.

Finalmente, eliminamos la tabla temporal para liberar el espacio en la base de datos. La tabla temporal “#TempVentas” solo existe durante la ejecución de la consulta y se elimina automáticamente al finalizar.

Ejemplo práctico de cómo se puede utilizar una tabla variable en SQL Server.

Supongamos que tenemos una base de datos que contiene una tabla llamada “Productos”. Queremos crear una consulta que muestre todos los productos cuyo precio es mayor que el promedio de los precios de todos los productos.

Aquí te dejo un ejemplo de cómo crear una tabla variable y utilizarla para resolver este problema:

-- Creamos una tabla variable para almacenar los precios de los productos
DECLARE @Precios TABLE
(
    Precio MONEY
);

-- Insertamos los precios de los productos en la tabla variable
INSERT INTO @Precios (Precio)
SELECT Precio
FROM Productos;

-- Calculamos el promedio de los precios de los productos
DECLARE @Promedio MONEY;
SELECT @Promedio = AVG(Precio)
FROM @Precios;

-- Seleccionamos los productos cuyo precio es mayor que el promedio
SELECT *
FROM Productos
WHERE Precio > @Promedio;

En este ejemplo, creamos una tabla variable llamada “@Precios” con una columna “Precio”. Luego, insertamos los precios de los productos de la tabla “Productos” en la tabla variable.

A continuación, calculamos el promedio de los precios de los productos utilizando la función AVG y asignamos el resultado a una variable llamada “@Promedio”.

Finalmente, seleccionamos los productos de la tabla “Productos” cuyo precio es mayor que el promedio almacenado en la variable “@Promedio”.

Es importante destacar que una tabla variable solo existe durante la sesión de conexión en la que fue creada y no puede ser referenciada fuera de su contexto de creación.