Un programmatore sta testando e confrontando la stessa applicazione che utilizza la stessa struttura di database e gli stessi dati, solo in due database separati, uno con Oracle 8 e uno con Oracle 9.
L'app esegue una query senza ORDER BY
clausole.
Afferma che la query ORDER-BY-less dovrebbe restituire le righe nello stesso ordine in entrambi i database.
Gli dico che non esiste alcuna garanzia dello stesso ordine di riga a meno che tu non esplicitamente fornisca una clausola ORDER BY.
Il database ha gli stessi indici e chiavi. Ma il piano esplicativo mostra che in uno dei database il motore utilizza la chiave di una delle tabelle unite mentre nell'altro database ne utilizza un'altra.
Insinua che i due ambienti DB non sono uguali, il che è dovuto al fatto che hanno statistiche diverse, motori rdbms diversi, ecc., Ma non perché non sono riuscito a replicare ogni indice del database originale.
Gli dico che deve esplicitamente fornire una ORDER BY
clausola se l'ordine è davvero così importante.
La domanda
Quindi posso spiegarlo meglio:
In quale ordine una query recupera le righe quando non esplicitamente fornisce una clausola ORDER BY, e perché quella query non restituisce le righe nello stesso ordine?