Ist ORDER BY und ROW_NUMBER () deterministisch?

Ich habe SQL in einigen Datenbank-Engines von Zeit zu Zeit mehrere Jahre lang verwendet, habe aber wenig theoretisches Wissen, so dass meine Frage für einige von Ihnen sehr "noobisch" sein könnte. Aber es ist mir jetzt wichtig geworden, also muss ich fragen.

Stellen Sie sich Tabellen-URLs mit einer nicht eindeutigen Spalte vorstatus. Und für die Frage nehmen wir an, dass wir eine große Anzahl von Zeilen haben und der Status in jedem Datensatz den gleichen Wert hat.

Und stellen Sie sich vor, wir führen mehrmals eine Abfrage durch:

SELECT * FROM Urls ORDER BY status

Erhalten wir jedes Mal die gleiche Zeilenreihenfolge oder nicht? Was passiert, wenn wir neue Zeilen hinzufügen? Ändert sich die Reihenfolge oder werden neue Datensätze an das Ende der Ergebnisse angehängt? Und wenn wir nicht die gleiche Bestellung erhalten - von welchen Bedingungen hängt diese Bestellung ab?

TunROW_NUMBER() OVER (ORDER BY status) wird die gleiche Reihenfolge wie oben angegeben zurückgegeben oder basiert sie auf einem anderen Ordnungsmechanismus?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage