sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er den bedste måde at udføre 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 er den forespørgsel, jeg bruger til personsøgning. brug det, og du vil få de ønskede 10 poster på 4-5 sekunder. Jeg får 10 poster på 3 sekunder, og de samlede rekorder i min db er 10 millioner, brug ikke top 10, det vil kun bringe de samme 10 poster hver gang. i mit tilfælde bibeholder jeg sidestørrelse og startrækkenummer (@FromRow) i sessionen, og jeg sender disse to værdier til nedenstående lagrede procedure og får resultatet. Yderligere, hvis du bruger SQL 2012, vil du måske bruge OFFSET og Hent de næste 10 rækker. søg på google om OFFSET søgeord, og du vil se det ønskede resultat øverst.

tak



  1. Postgresql lagret procedure returner vælg resultatsæt

  2. Sådan bruger du mysql.exe fra C#

  3. Understøttelse af JSON i Oracle 11g

  4. er denne form for SQL-strukturering (i en mysql-database) effektiv i en model i den virkelige verden?