Un programador está probando y comparando la misma aplicación que usa la misma estructura de base de datos y los mismos datos, solo en dos bases de datos separadas, una con Oracle 8 y otra con Oracle 9.
La aplicación ejecuta una consulta sin ORDER BY
cláusula.
Afirma que la consulta ORDER-BY-less debería devolver las filas en el mismo orden en ambas bases de datos.
Le digo que no hay garantía del mismo orden de fila a menos que usted proporcione explícitamente una cláusula ORDER BY
La base de datos tiene los mismos índices y claves. Pero el plan de explicación muestra que en una de las bases de datos el motor está usando la clave de una de las tablas unidas, mientras que en la otra base de datos está usando la de otra.
Insinúa que los dos entornos de base de datos no son iguales, lo que se debe a que tienen estadísticas diferentes, diferentes motores rdbms, etc., pero no porque no haya podido replicar cada índice que tiene la base de datos original.
Le digo que debe proporcionar explícitamente una ORDER BY
cláusula si la orden es realmente tan importante.
La pregunta
Entonces puedo explicarlo mejor:
¿En qué orden una consulta obtiene filas cuando no proporciona explícitamente una cláusula ORDER BY, y por qué esa consulta no devuelve las filas en el mismo orden?