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 con no ORDER BY
clause.
Afferma che la query ORDER-BY-less deve 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 fornisca esplicitamente una clausola ORDER BY.
Il database ha gli stessi indici e chiavi. Ma il piano spiega che in uno dei database il motore sta usando la chiave di una delle tabelle unite mentre nell'altro database sta usando un altro.
Insinua che i due ambienti DB non sono uguali, il che è dovuto al fatto che hanno statistiche diverse, diversi motori rdbms, ecc., ma non perché non sono riuscito a replicare ogni indice del database originale.
Gli dico che deve fornire esplicitamente una clausola ORDER BY
se l'ordine è davvero così importante.
La domanda
Quindi posso spiegarlo meglio:
In quale ordine una query recupera le righe quando non si fornisce esplicitamente una clausola ORDER BY e perché tale query non restituisce le righe nello stesso ordine?