¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Almacenamiento por filas y por columnas

Después de esta lección: Puedo explicar por qué una consulta analítica lee una tabla de otra manera que una búsqueda puntual.

Lección de 45 minSin comandos

Qué es el almacenamiento por columnas

El almacenamiento por columnas guarda juntos todos los valores de una misma columna. Una consulta que suma una columna lee solo esa columna y no el resto de la tabla.

Una papelería con tres tiendas guarda millones de ventas. La dueña pregunta cuántas unidades vendió en total. Para contestar no hace falta saber quién compró ni qué producto era.

Al terminar esta lección

Nota

Puedo explicar por qué una consulta analítica lee una tabla de otra manera que una búsqueda puntual.

Palabras clave

PalabraQué significaEjemplo
Búsqueda puntualuna pregunta que busca una fila concreta
Consulta analíticauna pregunta que resume muchas filas
Almacenamiento por filasguarda juntos los valores de una misma fila
Almacenamiento por columnasguarda juntos los valores de una misma columna
Agregadouna función que convierte muchas filas en un valorSUM(units)

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Búsqueda puntual frente a consulta analítica

Una búsqueda puntual pide una fila: la venta número 7. Toca pocas filas y casi todas sus columnas.

Una consulta analítica pide un resumen: las unidades vendidas en el mes. Toca muchas filas, pero solo una o dos columnas.

Las dos se escriben en SQL. Lo que cambia es cuánto de la tabla hay que leer.

Ejemplo resuelto: qué toca cada pregunta

PreguntaFilas que tocaColumnas que tocaTipo
¿Qué venta tiene el número 7?1Las 7 de la tablaBúsqueda puntual
¿Cuántas unidades se vendieron?Las 121 (units)Consulta analítica
¿Cuánto dinero se facturó?Las 122 (units y unit_price)Consulta analítica

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pruébalo: una búsqueda puntual

Código: duckdb
-- Una búsqueda puntual: una fila y todas sus columnas.
select * from sales where sale_id = 7;
-- Cambia 7 por 3 y pulsa Run.

Leer solo las columnas que la consulta nombra

Una tabla puede guardarse por filas: cada venta entera, una detrás de otra. Es cómodo para leer una venta completa.

También puede guardarse por columnas: primero todos los sale_id, luego todos los units, y así. Es cómodo para sumar una columna.

DuckDB guarda por columnas. Una suma de units no lee shop ni product.

Ejemplo resuelto: una tabla de dos maneras

AlmacenamientoCómo queda guardado (tres ventas, tres columnas)Bueno para
Por filas1 Centro 3 | 2 Centro 10 | 3 Norte 2Leer una venta entera
Por columnassale_id: 1 2 3 | shop: Centro Centro Norte | units: 3 10 2Sumar o contar una columna

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pruébalo: sumar una o dos columnas

Código: duckdb
-- Dos columnas: el dinero de todas las ventas.
select sum(units * unit_price) as revenue from sales;
-- Cambia la suma para obtener solo sum(units) y pulsa Run.

Un agregado resume una columna entera

Un agregado recorre una columna y devuelve un valor. COUNT cuenta filas, SUM suma, MIN y MAX dan los extremos y AVG la media.

Si la consulta solo tiene agregados, el resultado es una fila.

Escribe el nombre de las columnas que necesitas. Evita SELECT * cuando resumes.

Pruébalo: resumir las unidades

Código: duckdb
-- Un resumen de una sola columna: las unidades por venta.
select min(units) as fewest, max(units) as most, avg(units) as typical
from sales;
-- Cambia units por sale_id y mira qué pasa.

Un error frecuente

Advertencia

Mucha gente cree que SELECT * sale gratis porque el resultado se ve igual. En una tabla por columnas, el asterisco obliga a leer todas las columnas. Nombra solo las que necesitas.

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.