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
to je dotaz, který používám pro stránkování. použijte jej a za 4-5 sekund získáte ur požadovaných 10 záznamů. Dostávám 10 záznamů za 3 sekundy a celkové záznamy v mé databázi jsou 10 milionů, nepoužívejte top 10, vždy to přinese jen stejných 10 záznamů. v mém případě zachovávám velikost stránky a číslo počátečního řádku (@FromRow) v relaci a tyto dvě hodnoty předávám níže uvedené uložené proceduře a získám výsledek. Pokud používáte SQL 2012, možná budete chtít použít OFFSET a načíst dalších 10 řádků. vyhledejte na google klíčové slovo OFFSET a uvidíte požadovaný výsledek nahoře.
díky