Verwendung von TOP 100 PERCENT in SQL Server
Vor SQL Server 2005 konnte die SELECT TOP 100 PERCENT-Klausel als Trick verwendet werden um die Verwendung einer ORDER BY-Klausel in Ansichtsdefinitionen zu erzwingen. Seine Verwendung geht jedoch über Ansichtsdefinitionen in dynamischen SQL-Anweisungen in verschiedenen Anwendungen hinaus.
Zwischenmaterialisierung
Der Hauptzweck von SELECT TOP 100 PERCENT in dynamischem SQL ist für „ Zwischenmaterialisierung. Bei dieser Technik wird vor der endgültigen Abfrageausführung eine Zwischentabelle oder ein Abfrageergebnis als temporärer Speicher erstellt. Durch die Verwendung von TOP 100 PERCENT wird der temporäre Speicher mit allen Zeilen aus der ursprünglichen Abfrage materialisiert, wodurch sichergestellt wird, dass die Reihenfolge der Zeilen erhalten bleibt.
Arbeitsbeispiel
Bedenken Sie das Folgende Abfrage:
SELECT foo FROM MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100
Diese Abfrage kann aufgrund der unbestimmten Auswertungsreihenfolge zwischen WHERE und ORDER BY fehlschlagen Klauseln. Bei Verwendung von TOP 100 PERCENT funktioniert jedoch die folgende Abfrage:
SELECT foo FROM (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar WHERE CAST(foo AS int) > 100
In SQL Server 2000 und früher erzwang diese Technik die Materialisierung der inneren Abfrage, um sicherzustellen, dass die Zeilenreihenfolge erhalten blieb. Das gleiche Verhalten tritt immer noch in SQL Server 2005 auf.
Es ist jedoch wichtig zu beachten, dass eine übermäßige Verwendung von TOP 100 PERCENT Auswirkungen auf die Leistung haben kann und nur verwendet werden sollte, wenn dies unbedingt erforderlich ist. Wenn möglich, ist es vorzuziehen, sich für die Zeilenreihenfolge auf explizite Tabellenpartitionierung oder gespeicherte Prozeduren zu verlassen.
Das obige ist der detaillierte Inhalt vonWann und warum wird „SELECT TOP 100 PERCENT' in SQL Server verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!