Die Verwendung von OFFSET
für die Paginierung in SQL Server kann bei großen Datensätzen ineffizient sein. Die Keyset-Paginierung bietet eine überlegene Alternative.
Im Gegensatz zur Rowset-Paginierung (die alle vorhergehenden Zeilen durchsucht) verwendet die Keyset-Paginierung einen eindeutigen Index, um direkt auf den Startpunkt einer Seite zuzugreifen. Dies reduziert den unnötigen Datenabruf erheblich. Ein eindeutiger Index für den Paginierungsschlüssel (und alle zusätzlichen Abfragespalten) ist für eine optimale Leistung von entscheidender Bedeutung.
Angenommen, wir haben eine Tabelle mit dem Namen TableName
mit einem Index für Id
und wir müssen mit dem neuesten Id
-Wert paginieren.
Erste Abfrage (Erste Seite):
<code class="language-sql">SELECT TOP (@numRows) * FROM TableName ORDER BY Id DESC;</code>
Nachträgliche Abfragen:
<code class="language-sql">SELECT TOP (@numRows) * FROM TableName WHERE Id < @lastId ORDER BY Id DESC;</code>
Wobei @lastId
der niedrigste Id
Wert aus den Ergebnissen der vorherigen Seite ist.
Fügen Sie für Spalten ohne eindeutige Werte eine sekundäre Spalte in die Klauseln „ORDER BY“ und „WHERE“ ein, zusammen mit einem zusammengesetzten Index für beide Spalten.
Wichtige Überlegungen:
Das obige ist der detaillierte Inhalt vonWie kann die Keyset-Paginierung die Effizienz der SQL Server-Paginierung gegenüber OFFSET verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!