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 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

  • 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 utilizar una tabla variable en SQL Server.

Supongamos que tenemos una base de datos que contiene una tabla llamada 鈥淧roductos鈥. 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 鈥淧recio鈥. Luego, insertamos los precios de los productos de la tabla 鈥淧roductos鈥 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 鈥淧roductos鈥 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.

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: 鈥淰entas鈥 y 鈥淐lientes鈥. 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: 鈥淐lienteID鈥 y 鈥淭otalVentas鈥. 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.