Standard-Reihenfolge in der SELECT-Abfrage - SQL Server 2008 vs SQL 2012

Unser team vor kurzem die Aktualisierung unserer Datenbanken von SQL Server 2008 auf SQL Server 2012. Eine wichtige änderung, die wir bemerkten, war in der Standard-Reihenfolge der zurückgegebenen Zeilen von der SELECT-Anweisung, d.h., wenn eine explizite ORDER BY-Klausel nicht angegeben ist.

Als pro MSDN, SQL Server 2012 keine Garantie die Reihenfolge der Zeilen zurückgegeben, es sei denn, eine ORDER BY-Klausel angegeben ist.

Wir haben 2500+ gespeicherte Prozeduren auf 5 Datenbanken, die über eine SELECT-Anweisungen ohne ORDER BY-Klausel und es wird eine beträchtliche Anstrengung, um das hinzufügen der ORDER BY-Klausel manuell mit dem Verhalten in SQL Server 2008. Gibt es eine Einstellung oder ein schneller Weg, dies zu tun?

Die andere option, die noch nicht erforscht ist, ist das downgrade auf SQL Server 2008. Wie schwierig wäre diese?

Es gibt keine solche Sache wie die "Standard-Reihenfolge". Zeilen in einer relationalen Tabelle NICHT sortiert. es sei denn geben Sie eine order by das DBMS ist frei, kehren Sie in irgendeinem, um es zu passen scheint. Ihr code gebrochen wurde, von Anfang an. Die einzig sinnvolle Lösung, um Ihr problem zu beißen die Kugel und ändern den code ein order by Man Glück hat dieser Fehler noch nicht gezeigt, schon früher.
Auch SQL 2008 ist das gleiche, dass es garantiert kein "default" - Zeile der Bestellung
Versuchen Sie es mit clustured und nicht-clustured index, wenn Sie bereits ein primary key in Ihrer Tabelle, die Sie nicht haben, um über sorgen clustured als standardmäßig primary key ist clustured index.
ORDER BY sollte nur relevant sein, in SELECT Abfragen. (es sei denn, Sie tun wirklich dumme Dinge wie LIMIT 1 in Unterabfragen oder ausbrechen der cursor-loops)
Warum ist der Einsatz von LIMIT eine dumme Sache, @joop?

InformationsquelleAutor Channs | 2014-10-07

Schreibe einen Kommentar