Ir al contenido

Usando Tablas Temporales en MariaDB

·558 palabras·3 mins
Bases de Datos
Alejandro Duarte
Autor
Alejandro Duarte
Alejandro Duarte es un Ingeniero de Software, escritor publicado y galardonado. Actualmente, trabaja para MariaDB plc como Ingeniero de Relaciones con Desarrolladores (Developer Relations Engineer). Comenzó su trayectoria en programación a los 13 años con BASIC en una rudimentaria pantalla negra, para lugo rápidamente transitar a C, C++ y Java durante sus años académicos en la Universidad Nacional de Colombia. Trasladándose primero al Reino Unido y luego a Finlandia, Alejandro profundizó su participación en la comunidad de código abierto. Es reconocido en los círculos de Java, acreditado con artículos y videos que acumulan millones de vistas, y presentaciones en eventos internacionales.

Nota: Traducido de la versión original en Inglés.

Exploremos el funcionamiento de las tablas temporales en MariaDB. Primero, tenemos que conectarnos al servidor. Por ejemplo (usa tus propios detalles de conexión):

mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo

Para resaltar un punto antes de continuar, vamos a crear una tabla estándar (permanente). Así se hace:

CREATE TABLE t (
    c INT
);

Esta tabla, t, persistirá en la base de datos incluso después de salir del cliente:

exit

Cuando nos reconectamos y revisamos las tablas usando SHOW TABLES;, veremos la tabla t:

mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
SHOW TABLES;
+----------------+
| Tables_in_demo |
+----------------+
| t              |
+----------------+

Claro, todo esto es bastante obvio. Pero ahora, recreemos esta tabla e intentemos algo diferente:

CREATE OR REPLACE TEMPORARY TABLE t (
    c INT
);

Observa la palabra clave TEMPORARY. Después de crear esta tabla, si ejecutamos SHOW TABLES;, aparecerá en la lista. Podemos insertar datos en ella, consultarla, unirla con otras tablas. Se comporta como una tabla normal durante la sesión actual. Sin embargo, si salimos del cliente, luego nos reconectamos y realizamos SHOW TABLES; nuevamente, la tabla temporal t no aparecerá listada. Una tabla temporal sólo existe durante la duración de la sesión en la que fue creada y otras sesiones no podrán verla.

Caso de Uso para Tablas Temporales
#

Las tablas temporales son bastante útiles para operaciones transitorias de datos. Por ejemplo, considera una tabla llamada products en nuestra base de datos:

CREATE TABLE products (
  id INT NOT NULL AUTO_INCREMENT,
  code VARCHAR(100) NOT NULL,
  name VARCHAR(250) NOT NULL,
  description TEXT DEFAULT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY code (code)
)

Podemos crear una tabla temporal que imite la estructura de products:

CREATE TEMPORARY TABLE t LIKE products;

Podemos confirmar esto ejecutando:

DESCRIBE t;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| code        | varchar(100) | NO   | UNI | NULL    |                |
| name        | varchar(250) | NO   |     | NULL    |                |
| description | text         | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

Inicialmente, t estará vacía. Sin embargo, supongamos que queremos transferir algunos datos de products a t. Supongamos que solo queremos incluir productos que contengan el número 0 en su código:

INSERT INTO t
SELECT * FROM products
WHERE code LIKE '%0%';

Después de ejecutar este comando, si consultamos la tabla temporal t:

SELECT * FROM t;
+----+--------+------------------+---------------------------------------------------+
| id | code   | name             | description                                       |
+----+--------+------------------+---------------------------------------------------+
|  1 | BG2024 | BugBlaster       | Eradicates software bugs with a single scan.      |
|  3 | FW001  | FireWhale        | An oversized, comprehensive firewall solution.    |
|  4 | CLD404 | CloudNine Finder | Find your way back from cloud outages and errors. |
+----+--------+------------------+---------------------------------------------------+

Vemos los datos filtrados.

Conclusión
#

Las tablas temporales ofrecen una forma poderosa de manejar datos para procesamiento temporal sin afectar el almacenamiento de datos persistente. Son particularmente útiles en escenarios donde los datos necesitan ser manipulados o transformados temporalmente. Puedes usar tablas permanentes para este tipo de manipulación de datos, pero las tablas temporales son útiles cuando necesitas limpieza automática, reducción del riesgo de conflictos de nombres, aislamiento y seguridad, y gestión de recursos para el mejor rendimiento de consultas.

Relacionados

Alta Disponibilidad y Resiliencia de Bases de Datos con MaxScale
·1472 palabras·7 mins
Bases de Datos
Nota: Traducido de la versión original en Inglés. Las aplicaciones críticas de negocio requieren alta disponibilidad.
¿Por Qué Necesitamos Bases de Datos y SQL?
·1716 palabras·9 mins
Bases de Datos
Nota: Traducido de la versión original en Inglés. SQL tiene una larga y probada historia de éxito.
Análisis de Datos Rápido con MariaDB ColumnStore
·1311 palabras·7 mins
Bases de Datos
Nota: Traducido de la versión original en Inglés. Tiempos de consulta lentos en bases de datos grandes son un dolor de cabeza común.