sql >> Databasteknik >  >> RDS >> Sqlserver

Vilket är det bästa sättet att utföra paginering på SQL Server?

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

det är frågan jag använder för personsökning. använd den och du kommer att få dina önskade 10 poster på 4-5 sekunder. Jag får 10 poster på 3 sekunder och det totala antalet rekord i min db är 10 miljoner, använd inte topp 10 det kommer bara att ge samma 10 poster varje gång. i mitt fall bibehåller jag sidstorlek och startradnummer (@FromRow) i sessionen och jag skickar dessa två värden till nedanstående lagrade procedur och får resultatet. Ytterligare mer om du använder SQL 2012 kanske du vill använda OFFSET och hämta nästa 10 rader typ. sök på google om OFFSET nyckelord och du kommer att se ditt önskade resultat överst.

tack



  1. Kodningsfel med sqlalchemy och postgresql

  2. mySQL automatisk inkrement ökar med 10 (ClearDB &Node)

  3. oracle PL/SQL hur man beräknar intervall ip för IPv6 cidr

  4. Logga specifik postgresql-fråga med pg-promise