Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist der beste Weg, um eine Paginierung auf SQL Server durchzuführen?

ALTER PROCEDURE [dbo].[SP_tblTest_SelectSpecificRecordsWithCTE]
    @FromRow int = 1000000,
    @PgSize int = 10
AS
BEGIN
    ;WITH RecordsRN AS
    (
        select ID, colValue, ROW_NUMBER() over(order by colvalue) as Num from tblTest
    )
    SELECT ID Value, colValue Text FROM RecordsRN WHERE Num between @FromRow AND (@[email protected])
END

Das ist die Abfrage, die ich zum Paging verwende. Verwenden Sie es und Sie erhalten Ihre gewünschten 10 Datensätze in 4-5 Sekunden. Ich erhalte 10 Datensätze in 3 Sekunden und die Gesamtanzahl der Datensätze in meiner Datenbank beträgt 10 Millionen. Verwenden Sie nicht die Top 10, es werden immer nur die gleichen 10 Datensätze angezeigt. In meinem Fall behalte ich die Seitengröße und die Startzeilennummer (@FromRow) in der Sitzung bei und übergebe diese beiden Werte an die unten angegebene gespeicherte Prozedur und erhalte das Ergebnis. Wenn Sie SQL 2012 verwenden, möchten Sie möglicherweise OFFSET verwenden und Holen Sie sich die nächsten 10 Zeilen. Suchen Sie bei Google nach dem Schlüsselwort OFFSET und Sie sehen Ihr gewünschtes Ergebnis ganz oben.

Danke