Heim  >  Artikel  >  Datenbank  >  Erläutern Sie die Verarbeitungsmethode für Paging-Abfragen von SQL Server

Erläutern Sie die Verarbeitungsmethode für Paging-Abfragen von SQL Server

巴扎黑
巴扎黑Original
2017-08-11 15:01:461763Durchsuche

Im Folgenden sind mehrere Möglichkeiten zum Schreiben von Abfrageskripten aufgeführt, die ich online gefunden habe und die ich hiermit als Referenz auf der Script House-Plattform zur Verfügung stelle.

sqlserver2008 unterstützt die Schlüsselwortbeschränkung nicht, daher wird dies bei seinen Paging-SQL-Abfrageanweisungen nicht der Fall sein In der Lage sein, die MySQL-Methode zu verwenden, bietet sqlserver2008 Schlüsselwörter wie „top“ und „rownumber“, sodass das Paging über diese Schlüsselwörter erreicht werden kann.

Im Folgenden sind die Schreibmethoden mehrerer Abfrageskripte aufgeführt, die ich im Internet gefunden habe:

Mehrere effiziente Paging-SQL-Abfrageanweisungen von sqlserver2008

Top-Lösung:

SQL-Code:


select top 10 * from table1
where id not in(select top 开始的位置 id from table1)

max:

SQL-Code:


select top 10 * from table1
where id>(select max(id)
from (select top 开始位置 id from table1 order by id)tt)

Zeile:

SQL-Code:


select *
from (
select row_number()over(order by tempcolumn)temprownumber,*
from (select top 开始位置+10 tempcolumn=0,* from table1)t
)tt
where temprownumber>开始位置

3 Paging-Methoden, nämlich Max-Plan, Top-Plan, Zeilenplan

Effizienz:

1.: Reihe

2.: max.

Nr. 3 : top

Nachteile:

max: Der Benutzer muss komplexes SQL schreiben und unterstützt keine nicht eindeutige Spaltensortierung

oben: Benutzer müssen komplexes SQL schreiben, zusammengesetzte Primärschlüssel werden nicht unterstützt

Zeile: sqlserver2000 wird nicht unterstützt

Testdaten:

Es gibt insgesamt 3,2 Millionen Daten, auf jeder Seite werden 10 Daten angezeigt und es wurden jeweils 20.000 Seiten, 150.000 Seiten und 320.000 Seiten getestet.

Seitenzahl, oberer Plan, maximaler Plan, Zeilenplan

20.000, 60 ms, 46 ms, 33 ms
150.000, 453 ms, 343 ms, 310 ms
320.000, 953 ms, 720 ms, 6 86 ms

ist eine Paging-Lösung, die SQL-Anweisungen über ein Programm zusammenfügt

Die von Benutzern genannten SQL-Anweisungen erfordern kein Schreiben komplexer SQL-Logik

Kein Benutzer stellt SQL wie folgt bereit

SQL-Code


select * from table1

Beginnen Sie mit Punkt 5, fragen Sie 5 Elemente ab und nach der Verarbeitung wird der SQL zu

SQL-Code


select *
from (
select row_number()over(order by tempcolumn)temprownumber,*
from (select top 10 tempcolumn=0,* from table1)t
)tt
where temprownumber>5

Was bedeutet das? Unterteilen Sie es

Ändern Sie zunächst leicht die vom Benutzer eingegebene SQL-Anweisung

Fügen Sie die oberste Startposition + Anzahl der Elemente nach der Auswahl hinzu, um

zu werden, und fügen Sie dann eine Spalte hinzu von tempcolum wird es so:

SQL-Code


select top 20 tempcolumn=0,* from clazz

ist auf einer Ebene verschachtelt, sodass die Zeilennummer abgefragt werden kann

Die Spalte gerade ist

wird hier für die Reihenfolge verwendet (ich weiß nicht, warum die Funktion „row_number“ von sqlserver sortieren muss)

SQL-Code


select row_number()over(order by tempcolumn)temprownumber,*
from (修改过的查询)t

Fügen Sie eine weitere Ebene hinzu und filtern Sie Zeilen heraus, deren Zeilennummern unter der Startposition liegen

SQL-Code


select * from (第二层)tt
where temprownumber>10

Das obige ist der detaillierte Inhalt vonErläutern Sie die Verarbeitungsmethode für Paging-Abfragen von SQL Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn