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