Skip to main content
SQL

Cómo escribir consultas SQL más limpias y mantenibles

By enero 19, 2024septiembre 2nd, 2026No Comments

SQL es uno de los lenguajes más utilizados en el mundo de los datos. Desde analistas de negocio hasta Data Engineers, prácticamente cualquier profesional que trabaje con información estructurada utiliza SQL a diario para consultar, transformar y analizar datos.

Sin embargo, a medida que los proyectos crecen, las consultas también lo hacen. Lo que comienza como una consulta sencilla puede terminar convirtiéndose en cientos de líneas difíciles de leer, mantener y optimizar.

Escribir SQL que funcione es importante. Escribir SQL limpio, entendible y mantenible es aún más importante.

En este artículo veremos algunas buenas prácticas para mejorar la calidad de nuestras consultas SQL y facilitar el trabajo tanto para nosotros como para el resto del equipo.

¿Por qué es importante escribir SQL limpio?

Cuando desarrollamos consultas, normalmente pensamos en obtener el resultado correcto.

Sin embargo, una consulta rara vez se ejecuta una sola vez.

Con frecuencia ocurre que:

  • Otro compañero debe revisarla.
  • Necesita modificarse meses después.
  • Se convierte en la base de un dashboard.
  • Forma parte de un pipeline automatizado.
  • Se integra dentro de un proyecto dbt.

Si la consulta es difícil de entender, cualquier modificación futura será más costosa y propensa a errores.

Por este motivo, la legibilidad debe considerarse tan importante como el resultado final.

Utilizar nombres descriptivos

Uno de los errores más comunes consiste en utilizar alias poco claros.

Por ejemplo:

SELECT

    a.id,

    b.name,

    c.total

FROM t1 a

JOIN t2 b

    ON a.id = b.id

JOIN t3 c

    ON a.id = c.id

Aunque técnicamente es correcto, resulta complicado entender qué representa cada tabla.

Una versión más legible sería:

SELECT

    customers.customer_id,

    customers.customer_name,

    orders.order_total

FROM customers

JOIN customer_details

    ON customers.customer_id = customer_details.customer_id

JOIN orders

    ON customers.customer_id = orders.customer_id

Los nombres descriptivos facilitan enormemente la comprensión de la consulta.

Dar formato al código

El formato influye mucho más de lo que parece.

Una consulta mal estructurada puede resultar difícil de leer incluso para quien la escribió originalmente.

Por ejemplo:

SELECT customer_id,customer_name,total_sales

FROM customers

WHERE country=’Spain’

AND total_sales>1000

ORDER BY total_sales DESC

La misma consulta con un formato adecuado:

SELECT

    customer_id,

    customer_name,

    total_sales

FROM customers

WHERE country = ‘Spain’

    AND total_sales > 1000

ORDER BY total_sales DESC

El resultado es mucho más claro.

Utilizar CTEs para dividir la lógica

Cuando una consulta comienza a crecer, una de las mejores prácticas consiste en utilizar Common Table Expressions (CTEs).

Los CTEs permiten dividir procesos complejos en bloques más fáciles de entender.

Por ejemplo:

WITH customer_sales AS (

 

    SELECT

        customer_id,

        SUM(total_amount) AS total_sales

    FROM orders

    GROUP BY customer_id

 

)

 

SELECT *

FROM customer_sales

WHERE total_sales > 1000

Este enfoque facilita:

  • Leer la lógica.
  • Reutilizar resultados intermedios.
  • Depurar errores.
  • Mantener el código.

Evitar SELECT *

Utilizar SELECT * puede parecer cómodo, pero rara vez es una buena práctica en entornos productivos.

Por ejemplo:

SELECT *

FROM customers

El problema es que:

  • Recupera columnas innecesarias.
  • Aumenta el volumen de datos procesados.
  • Puede generar errores cuando cambia la estructura de la tabla.

Es preferible especificar únicamente las columnas necesarias:

SELECT

    customer_id,

    customer_name,

    country

FROM customers

Esto mejora tanto la legibilidad como el rendimiento.

Documentar consultas complejas

No todas las consultas son sencillas.

En ocasiones es necesario implementar reglas de negocio complejas o cálculos difíciles de interpretar.

En estos casos, los comentarios pueden resultar muy útiles.

Por ejemplo:

— Clientes con más de 12 meses de antigüedad

SELECT

    customer_id,

    customer_name

FROM customers

WHERE registration_date < CURRENT_DATE – INTERVAL ’12 months’

Los comentarios ayudan a transmitir la intención de la consulta.

Mantener una estructura consistente

Los equipos más eficientes suelen seguir convenciones comunes.

Por ejemplo:

SELECT

FROM

JOIN

WHERE

GROUP BY

HAVING

ORDER BY

Siempre en el mismo orden y formato.

Esta consistencia facilita enormemente la revisión y mantenimiento del código.

Evitar lógica innecesariamente compleja

A veces encontramos consultas con múltiples niveles de subconsultas anidadas que dificultan la comprensión.

Por ejemplo:

SELECT *

FROM (

    SELECT *

    FROM (

        SELECT *

        FROM sales

    )

)

Aunque funcione, no aporta ningún valor.

Siempre que sea posible, conviene simplificar la lógica.

Un código más sencillo suele ser más fácil de mantener y optimizar.

Utilizar alias de forma inteligente

Los alias pueden mejorar considerablemente la legibilidad cuando se utilizan correctamente.

Por ejemplo:

SELECT

    c.customer_name,

    o.order_date,

    o.total_amount

FROM customers c

JOIN orders o

    ON c.customer_id = o.customer_id

En consultas con múltiples tablas, los alias cortos pero descriptivos ayudan a reducir ruido visual.

Separar transformaciones en etapas

Cuando una consulta realiza muchas transformaciones simultáneamente, suele ser preferible dividir el proceso.

Por ejemplo:

WITH sales AS (

 

    SELECT *

    FROM orders

 

),

 

monthly_sales AS (

 

    SELECT

        DATE_TRUNC(‘month’, order_date) AS month,

        SUM(total_amount) AS revenue

    FROM sales

    GROUP BY 1

 

)

 

SELECT *

FROM monthly_sales

Esta aproximación permite entender claramente cada paso del proceso.

Pensar en quien leerá el código

Una buena pregunta antes de finalizar una consulta es:

«¿Podría entender esto alguien del equipo dentro de seis meses?»

Si la respuesta es no, probablemente merece una revisión.

El SQL no debe escribirse únicamente para las máquinas.

También debe escribirse para las personas.

SQL limpio y Analytics Engineering

La importancia de escribir SQL limpio ha aumentado con la popularidad del Analytics Engineering.

Herramientas como dbt promueven prácticas propias de la ingeniería de software:

  • Modularidad.
  • Reutilización.
  • Testing.
  • Documentación.
  • Control de versiones.

En este contexto, la calidad del código SQL adquiere una relevancia mucho mayor.

Una consulta mal estructurada puede afectar a múltiples modelos aguas abajo.

Errores frecuentes al escribir SQL

Existen algunos patrones que conviene evitar.

Consultas excesivamente largas

Cuando una consulta supera varios cientos de líneas, suele ser una señal de que podría dividirse en componentes más pequeños.

Alias ambiguos

Alias como:

a

b

c

d

dificultan enormemente la lectura.

Falta de comentarios

Especialmente en reglas de negocio complejas.

Uso abusivo de subconsultas

Los CTEs suelen proporcionar una alternativa más legible.

Seleccionar más datos de los necesarios

Incrementa el consumo de recursos y dificulta el mantenimiento.

Beneficios de un SQL más limpio

Adoptar estas prácticas aporta ventajas importantes.

Mejor mantenimiento

Las modificaciones futuras resultan más sencillas.

Menor riesgo de errores

La lógica es más fácil de validar y revisar.

Mayor colaboración

Otros miembros del equipo pueden comprender el código rápidamente.

Mejor rendimiento

Las consultas suelen ser más eficientes cuando se diseñan cuidadosamente.

Mayor escalabilidad

Resulta más sencillo ampliar modelos y procesos existentes.

SQL limpio en entornos modernos de datos

Actualmente, SQL se encuentra en el centro de muchas plataformas modernas.

Herramientas como:

  • Snowflake.
  • BigQuery.
  • Databricks.
  • Redshift.
  • Fabric.
  • dbt.

dependen en gran medida de consultas SQL para transformar información.

A medida que los equipos gestionan modelos más complejos, la calidad del código se convierte en un factor clave para el éxito de los proyectos.

Conclusión

Escribir SQL limpio no consiste únicamente en seguir normas estéticas. Se trata de crear consultas más fáciles de entender, mantener y evolucionar con el tiempo.

Utilizar nombres descriptivos, estructurar correctamente el código, apoyarse en CTEs, evitar complejidad innecesaria y documentar la lógica son prácticas que aportan valor tanto a nivel individual como de equipo.

En un entorno donde los datos desempeñan un papel cada vez más estratégico, dedicar tiempo a mejorar la calidad del SQL es una inversión que genera beneficios a largo plazo y contribuye a construir plataformas analíticas más robustas y sostenibles.

Leave a Reply