2009-08-11 2 views

Antwort

7

Da die Ergebnisse eines "TOP N" qualifizierten SELECT unbestimmt sind, wenn Sie keine ORDER BY-Klausel haben.

+0

Streng genommen sind die Ergebnisse von SELECT ohne ORDER BY unbestimmt. Der TOP beschränkt nur n Zeilen auf 5 Zeilen, also erhalten Sie statt aller Zeilen in beliebiger Reihenfolge 5 verschiedene Zeilen. – gbn

+0

Heh. Nun * streng * nur ihre Reihenfolge ist normalerweise unbestimmt (was in SQL technisch nicht existiert ohne eine ORDER BY sowieso). Mit TOP sind die tatsächlichen * Inhalte * jedoch ohne ORDER BY unbestimmt. – RBarryYoung

+1

Wir haben beide Recht ... aber das TOP ist die Folge einer unbestimmten Reihenfolge ;-) Ich habe Ihnen immer noch +1 für die erste Antwort gegeben – gbn

3

Ohne eine ORDER BY Klausel können Sie nicht vorhersagen, in welcher Reihenfolge Sie Ergebnisse erhalten. Es gibt wahrscheinlich einen interessanten Grund dafür, warum SQL Server diese Abfragen unterschiedlich verarbeitet, aber aus der Sicht eines Benutzers besteht die Lösung einfach darin, die für Ihre Abfrage relevante Klausel ORDER BY durchzusetzen, damit Sie wissen, welche fünf Elemente zuerst kommen.

2

Der Grund ist einfach: Sie haben keine ORDER BY-Klausel angegeben. So könnte der Optimierer zum Beispiel verschiedene Indizes verwenden, um zwei verschiedene Abfragen zu erfüllen, wenn es einen schlanken Index gibt, der ItemID enthält, aber nicht CategoryID, das berührt werden kann, um die erste Abfrage zu erfüllen. Eine sehr häufige Frage, hat einen gekapselten naswer:

Without ORDER BY, there is no default sort order.

3

Da Sie keine ORDER BY-Klausel angegeben wird, wird der Optimierer die effizienteste Art und Weise bestimmen, um die Abfrage zu tun, um zu tun, Sie fragen. Dies bedeutet, dass für die zwei Spalten, die Sie in Ihren beiden Abfragen angegeben haben, möglicherweise eine andere Indizierung durchgeführt wird. Dies führt dazu, dass Sie sehen, was Sie sehen.

+0

Während andere auf der Sprache selbst korrekt sind, ist dies genau richtig für SQL Server. Wenn Sie den geschätzten Ausführungsplan untersuchen, werden wahrscheinlich viele verschiedene Indizes verwendet. Allerdings sagt mir mein Bauch, dass der fragliche Tisch keinen Index hat. –

+0

+1 von mir, übrigens. –