0Pricing
SQL Interview Prep · Lección

Orden lógico de ejecución de una consulta

Descubra por qué FROM se ejecuta antes que SELECT y cómo conocer el orden real de ejecución permite responder a una docena de preguntas capciosas

Orden lógico de ejecución de una consulta es una lección gratuita de SQL Interview Prep en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Interview Prep incluye 4 lecciones en total.

La pregunta que abre la puerta a una docena de respuestas

Los entrevistadores preguntan "¿En qué orden se ejecuta realmente una consulta?" porque esta cuestión explica muchas cosas: por qué un alias de SELECT falla en WHERE, por qué WHERE no puede filtrar una función de agregación y mucho más.

Orden escrito frente a orden lógico

Usted escribe una consulta comenzando con SELECT, pero el motor la ejecuta comenzando con FROM. Esa diferencia, junto con el hecho de que SELECT se evalúa casi al final, causa la mayoría de las confusiones.

El orden lógico completo

El orden lógico completo es: FROM, después WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY y, por último, LIMIT. Todas las situaciones problemáticas que se explican a continuación se derivan directamente de esta lista.

Por qué FROM se ejecuta primero

FROM se ejecuta primero porque el motor necesita filas sobre las que trabajar antes de hacer cualquier otra cosa. Construye las filas de origen y solo entonces WHERE puede decidir cuáles conservar.

SELECT e.name, d.name AS dept
FROM employees e
JOIN departments d ON d.id = e.department_id
WHERE e.salary > 50000;

Trampa: el alias no se puede usar en WHERE

La consecuencia que más se pregunta en las entrevistas es la siguiente: un alias de SELECT no se puede usar en WHERE porque WHERE se ejecuta antes que SELECT. El código siguiente muestra el error y la solución: repetir la expresión.

-- FAILS: alias 'annual' unknown in WHERE
SELECT salary * 12 AS annual
FROM employees
WHERE annual > 600000;

-- FIX: repeat the expression
SELECT salary * 12 AS annual
FROM employees
WHERE salary * 12 > 600000;

Trampa: WHERE no puede ver las funciones de agregación

WHERE se ejecuta antes de la agrupación, por lo que no puede ver funciones de agregación como COUNT(). Para eso existe HAVING: WHERE filtra filas y HAVING filtra grupos después de la agregación.

-- WHERE cannot use COUNT(*)
SELECT department, COUNT(*) AS headcount
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

Por qué ORDER BY puede usar alias

El caso opuesto: ORDER BY se ejecuta después de SELECT, por lo que sí puede usar alias de SELECT. Es el mismo alias, pero en un momento diferente; por eso funciona aquí y no en WHERE.

SELECT name, salary * 12 AS annual
FROM employees
ORDER BY annual DESC;

Dónde encaja DISTINCT

DISTINCT se ejecuta después de SELECT, pero antes de ORDER BY. Como elimina duplicados en las columnas de salida, solo puede ordenar por algo que haya quedado incluido en la lista de selección.

-- ERROR in many engines:
-- ORDER BY column not in the DISTINCT select list
SELECT DISTINCT department
FROM employees
ORDER BY hire_date;

Recorrido práctico de una consulta completa

Recorramos una consulta real paso a paso: FROM lee las filas, WHERE filtra, GROUP BY agrupa, HAVING conserva los grupos, SELECT calcula, ORDER BY ordena y LIMIT limita el resultado.

SELECT customer_id, SUM(amount) AS total
FROM orders
WHERE status = 'paid'
GROUP BY customer_id
HAVING SUM(amount) > 1000
ORDER BY total DESC
LIMIT 10;

Ejecución lógica frente a ejecución física

Un matiz que demuestra dominio del tema: este es el orden lógico que define la corrección. El plan físico del optimizador puede ser diferente, siempre que produzca las mismas filas.

Una forma de recordar el orden

Para recordarlo, imagine que las filas avanzan por una canalización y que cada paso entrega al siguiente un conjunto más pequeño. Cuando algo falla, compruebe si un paso anterior produjo lo que necesita.

Comprobación rápida

Aplique el orden de ejecución para detectar el error.

Resumen

Resumen: el orden lógico es FROM, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, LIMIT. WHERE se ejecuta antes que SELECT, por lo que no admite alias; ORDER BY se ejecuta después, así que los alias funcionan.

Preguntas frecuentes

¿La lección «Orden lógico de ejecución de una consulta» es gratis?

Sí — el texto completo de «Orden lógico de ejecución de una consulta» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Interview Prep, actualiza a CoddyKit PRO. El curso de SQL Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Orden lógico de ejecución de una consulta»?

Descubra por qué FROM se ejecuta antes que SELECT y cómo conocer el orden real de ejecución permite responder a una docena de preguntas capciosas Practicas SQL Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Interview Prep?

No se requiere experiencia previa. SQL Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Orden lógico de ejecución de una consulta»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Interview Prep?

Sí. Cada lección de SQL Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Qué es SQL y por qué lo preguntan en las entrevistas
  2. Orden lógico de ejecución de una consulta
  3. Claves primarias, claves foráneas y restricciones
  4. Leer un esquema bajo presión
← Volver a SQL Interview Prep