Heim >Datenbank >MySQL-Tutorial >Warum „SELECT TOP 100 PERCENT' in SQL-Abfragen verwenden?
Vor SQL Server 2005 verwendeten Entwickler den Trick „Oberste 100 Prozent auswählen“, um die Verwendung einer Reihenfolge zu ermöglichen by-Klausel in einer Ansichtsdefinition. Über diesen Zweck hinaus enthält ein Teil des heute geerbten Codes jedoch immer noch „Select Top 100 Percent“ in dynamischen SQL-Anweisungen, die in ADO in ASP.NET-Anwendungen verwendet werden.
Die Frage: Gibt es einen Grund für die Verwendung von „ „Top 100 Prozent“ in diesen Szenarien?
Die Antwort: Mittelstufe Materialisierung
Laut Experten wie Adam Machanic wurde „Select Top 100 Percent“ für „Zwischenmaterialisierung“ verwendet. Hier ist der Grund:
In SQL Server können Abfragen je nach den Umständen in unterschiedlicher Reihenfolge ausgewertet werden. Beispielsweise können die folgenden beiden Abfragen aufgrund der Unklarheit in der Auswertungsreihenfolge unterschiedliche Ergebnisse liefern:
SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100 SELECT foo FROM (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar WHERE CAST(foo AS int) > 100
Vor SQL Server 2005 wurde jedoch die innere Abfrage durch das Einschließen der inneren Abfrage in „Wählen Sie die obersten 100 Prozent aus“ erzwungen gespult werden, was zu einer konsistenten Bewertungsreihenfolge führt:
SELECT foo FROM (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar WHERE CAST(foo AS int) > 100
Vorsicht Hinweis
Obwohl diese Technik in der Vergangenheit akzeptabel war, wird allgemein davon abgeraten, „Top 100 Prozent auswählen“ in dynamischem SQL zu verwenden. Die Ergebnisse sind möglicherweise aufgrund von Änderungen in Patch-Level, Schema, Indizes oder Zeilenanzahl nicht konsistent.
Das obige ist der detaillierte Inhalt vonWarum „SELECT TOP 100 PERCENT' in SQL-Abfragen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!