sql >> Database >  >> RDS >> Sqlserver

Wat is de beste manier om paginering op SQL Server uit te voeren?

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

dat is de vraag die ik gebruik voor paging. gebruik het en u krijgt de gewenste 10 records in 4-5 seconden. ik krijg 10 records in 3 seconden en de totale records in mijn db zijn 10 miljoen, gebruik geen top 10, het zal elke keer dezelfde 10 records opleveren. in mijn geval handhaaf ik de paginagrootte en het startrijnummer (@FromRow) in de sessie en ik geef deze twee waarden door aan de onderstaande opgeslagen procedure en krijg het resultaat. Verder meer als u SQL 2012 gebruikt, wilt u misschien OFFSET gebruiken en Fetch de volgende 10 rijen soort dingen. zoek op google over OFFSET trefwoord en u zult uw gewenste resultaat bovenaan zien.

bedankt



  1. 'max_user_connections' ingesteld op 200 - krijg nog steeds een foutmelding

  2. Voorkomen dat de gebruiker hetzelfde record bewerkt

  3. Hoe een string te vullen met voor-/achtervolgende karakters in MySQL – LPAD(), RPAD()

  4. kan geen verbinding maken met de server voor Postgres