2016-07-24 8 views
2

Lassen Sie uns sagen, dass die tableA einen Clustered-Index auf Column1 hatGibt es einen Leistungsunterschied zwischen ASC und DESC, wenn die ORDER BY-Klausel richtig indiziert ist?

Gibt es irgendwelche Auswirkungen auf die Leistung Unterschiede zwischen den folgenden Aussagen:

SELECT TOP 5 Column1 FROM tableA ORDER BY Column1 ASC 

SELECT TOP 5 Column1 FROM tableA ORDER BY Column1 DESC 

Update und der Fang

@TheGameiswar Antwort ist richtig . Allerdings gibt es einen großen Fang, wo es mehrere Spalten in der Reihenfolge von Klausel sind:

SELECT TOP 5 Column1 FROM tableA ORDER BY Column1 , Column2 DESC 

bedeutet eigentlich

SELECT TOP 5 Column1 FROM tableA ORDER BY Column1 ASC, Column2 DESC 

Above-Anweisung eine Sortierung Abfrageprozessor Operator auf den Plan erlegt und macht die Abfrage sehr ineffizient.

Also, stellen Sie sicher, dass die absteigende Sortierreihenfolge für beide Spalten

SELECT TOP 5 Column1 FROM tableA ORDER BY Column1 DESC , Column2 DESC 
+0

Theoretisch könnten Sie einen sehr, sehr, kleinen Unterschied feststellen, basierend auf einer Richtung, die eine etwas bessere Schleifenunterstützung als die andere in der CPU-Hardware hat. Die Leistung der Datenbankabfrage wird jedoch in der Regel vom Festplattenzugriff dominiert, wodurch CPU-Leistungsunterschiede in fast allen Szenarien um mehrere Größenordnungen übertroffen werden. –

Antwort

4

Kein Unterschied oder Leistungseinbuße ..

SQL Server einen Index, sofern diese verfügbar wird (für die Abfrage „DESC“ enthält Gebraucht) rückwärts oder vorwärts auf dem Sortieren in Abhängigkeit zu tun scannen ..

I eine Zahltabelle aufweisen, die Index-Nummer Spalte hat wie below.Below die Definition des Index ist ..

CREATE UNIQUE CLUSTERED INDEX [n] ON [dbo].[Numbers] 
(
    [Number] ASC 
) 

Wie Sie oben Index sehen kann, wird durch mit ASC-Option erstellt .. Jetzt können (die Standardeinstellung) sehen, wie Datenbank-Engine beschäftigt sich mit folgenden Abfrage

select top 10* from numbers 
order by number desc 

enter image description here

Sie SQL sehen entschieden, den Index rückwärts zu scannen.

Verwandte Themen