Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum ist mein SQL Server ORDER BY langsam, obwohl die geordnete Spalte indiziert ist?

Wenn Ihre Abfrage bis dahin keine Bestellung enthält, werden die Daten in der Reihenfolge zurückgegeben, in der sie gefunden wurden. Es gibt keine Garantie dafür, dass die Daten in derselben Reihenfolge zurückgegeben werden, wenn Sie die Abfrage erneut ausführen.

Wenn Sie eine order by-Klausel einfügen, muss die Datenbank eine Liste der Zeilen in der richtigen Reihenfolge erstellen und dann die Daten in dieser Reihenfolge zurückgeben. Dies kann viel zusätzliche Verarbeitung erfordern, was sich in zusätzlicher Zeit niederschlägt.

Es dauert wahrscheinlich länger, eine große Anzahl von Spalten zu sortieren, die Ihre Abfrage möglicherweise zurückgibt. Irgendwann wird Ihnen der Pufferspeicher ausgehen und die Datenbank muss mit dem Auslagern beginnen und die Leistung wird bergab gehen.

Versuchen Sie, weniger Spalten zurückzugeben (geben Sie anstelle von Select * die Spalten an, die Sie benötigen), und prüfen Sie, ob die Abfrage schneller ausgeführt wird.