You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
13 Hrs
28 Min
5 Seg

Tablas temporales vs. tablas variables

23/31
Resources

What are temporary tables and variable tables?

When working with databases, one of the most important and debated topics is the use of temporary tables and variable tables. Both serve to handle data in a temporary way and have their particularities that can significantly influence query performance and resource management. In this class, we will explore the key differences between these two tools and provide recommendations on when to use each.

How do temporary tables work?

Temporary tables allow you to manage data that you only need for the duration of a database connection session. When you create a temporary table with a single cat sign, it is limited to the current session and is automatically deleted when you close the connection.

CREATE TABLE #UserSourceTemp ( Code INT, Name NVARCHAR(50));
INSERT INTO #UserSourceTemp (Code, Name)SELECT Code, Name FROM UserSource;

What is a global temporary table?

While it is possible to create global temporary tables using two cat signs, it is advisable to avoid this practice. These tables are accessible by any user connected to the database, which could lead to conflicts and security problems.

CREATE TABLE ##UserSourceGlobal ( Code INT, Name NVARCHAR(50));

When should temporary tables be deleted?

Although temporary tables are deleted at logout, it is advisable to use the DROP TABLE command at the end of a stored procedure. This is important to avoid database crashes if a session is left open without closing properly.

DROP TABLE #UserSourceTemp;

What are variable tables?

Variable tables are a more efficient option if you are looking to manage data that does not require massive modifications or sharing between sessions. Unlike temporary tables, variable tables are faster to use, since they are only declared once and are automatically deleted at the end of their execution. They do not require the DROP TABLE command.

How to create a variable table?

The process to create a variable table is similar to declaring any other type of variable within SQL.

DECLARE @UserSourceTemp2 TABLE ( Code INT, Name NVARCHAR(50));
INSERT INTO @UserSourceTemp2 (Code, Name)SELECT Code, Name FROM UserSource;

What are the benefits of variable tables?

  • Performance efficiency: By consuming fewer resources and generating fewer locks at the database level.
  • Automatic management: They are automatically deleted at the end of their execution.
  • Limitations of use: They cannot be nested with other stored procedures such as temporary tables.

In summary, the choice between temporary tables and variable tables depends on your specific data management needs and the structure of your system. In general, variable tables are a more efficient option if you are looking to optimize performance and facilitate resource management. However, if you need to work with stored procedures where it is necessary to share data between several queries, temporary tables may be more suitable. Continue exploring and learning about these tools to improve your database management skills!

Contributions 6

Questions 3

Sort by:

Want to see more contributions, questions and answers from the community?

  • 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.