Recientemente tuve una discusión con un colega que estaba presionando para eliminar el orden por cláusulas de una consulta de producción porque el orden por columna era el mismo que la clave principal .
Después de una larga discusión en la que traté de explicar que no puede garantizar un pedido basado en la clave principal, la conclusión final fue que no iba a presionar para que se modificaran las consultas MSSQL.
Pero todavía iba a cambiar las consultas de DB2.
No pude encontrar de inmediato un artículo que refutara que DB2 ordena consultas por la clave primaria, y actualmente me pregunto si lo hace o no.
Entonces mi pregunta es, ¿cómo ordena DB2 una consulta si no hay orden por cláusula? ¿Utiliza la clave primaria?
¿Cómo puede garantizar que los datos salgan ordenados correctamente, sin una orden por cláusula, en un sistema paralelo?
Como se señaló en la respuesta de ypercube, cuando no hay
ORDER BY
cláusula no hay un orden definido .Lo que me gustaría agregar es que es importante darse cuenta de que SQL es en gran medida una abstracción, no especifica paso a paso lo que debe hacer el DBMS, sino que especifica sus requisitos del resultado final.
Esto implica que si los datos ya se buscan de una manera que asegure el orden correcto, esto es así porque el DBMS decidió una estrategia de este tipo y ya sabrá que no es necesario un trabajo de clasificación adicional para cumplir con los requisitos de la
ORDER BY
cláusula .Por otro lado, si no especifica que el pedido es significativo para usted (¿aunque realmente lo sea?), El DBMS lo tendrá en cuenta y si encuentra una estrategia diferente que sea más eficiente para encontrar los datos correctos en alguna otra orden aprovechará el hecho de que aparentemente no le importó la orden. (La estrategia elegida también podría cambiar con el tiempo, en función de la cantidad creciente de datos en las tablas relevantes, parches de software, etc.)
Es decir, eliminar la
ORDER BY
cláusula tiene muy pocas ventajas (un tamaño de consulta un poco más pequeño) pero una desventaja potencialmente enorme si el orden es realmente importante. Especialmente, ya que esto podría funcionar con el conjunto de datos de prueba y pasar las pruebas de aceptación solo para causar serios problemas en el futuro.fuente