sql >> Base de Datos >  >> RDS >> Oracle

Orden de evaluación de la cláusula Oracle SQL

La lista de selección no siempre se puede evaluar en último lugar porque ORDER BY puede usar alias que se definen en la lista de selección, por lo que deben ejecutarse después. Por ejemplo:

SELECT foo+bar foobar FROM table1 ORDER BY foobar

Diría que, en general, el orden de ejecución podría ser algo como esto:

  • DESDE
  • DONDE
  • AGRUPAR POR
  • SELECCIONAR
  • TENER
  • ORDENAR POR

Las cláusulas GROUP BY y WHERE se pueden intercambiar sin cambiar el resultado, al igual que HAVING y ORDER BY.

En realidad las cosas son más complejas porque la base de datos puede reordenar la ejecución según diferentes planes de ejecución. Siempre que el resultado sea el mismo, no importa en qué orden se ejecute.

Tenga en cuenta también que si se elige un índice para la cláusula ORDER BY, es posible que las filas ya estén en el orden correcto cuando se leen del disco. En este caso, la cláusula ORDER BY no se ejecuta en absoluto.