मैंने निम्नलिखित कोड लिखा है, यह ठीक काम करता है, लेकिन तालिका में दस लाख रिकॉर्ड होने पर इसे पूरा करने में 3 सेकंड लगते हैं। निम्नलिखित कोड को अनुकूलित करने का कोई तरीका है।टी-एसक्यूएल: अनुकूलित पेजिंग कैसे करें?
DBCC DROPCLEANBUFFERS;
DBCC FREEPROCCACHE;
DECLARE @Page_Size int;
DECLARE @Page_Number int;
DECLARE @Lower_Bound int;
DECLARE @Upper_Bound int;
SET @Page_Size = 30;
SET @Page_Number = 30000;
SET @Lower_Bound = (@Page_Number - 1) * @Page_Size;
--SET @Upper_Bound = @Page_Number * @Page_Size;
WITH Customers AS--(Row_Numbr, Record_Id, First_Name,
Middle_Name, Last_Name, Email, Telephone) AS
(
SELECT ROW_NUMBER()
OVER
(ORDER BY Account.Customer.Record_Id) AS Row_Numbr, *
FROM Account.Customer
)
SELECT top(@Page_Size) *
FROM Customers
WHERE Row_Numbr > @Lower_Bound--
AND Row_Numbr <= @Upper_Bound -- This is suppose to be faster
--SELECT * FROM Customers
--WHERE Row_Numbr > @Lower_Bound
-- AND Row_Numbr <= @Upper_Bound
निष्पादन योजना क्या कहती है? – super9
आपके पास कौन सी अनुक्रमणिका है? क्या आप बिल्ड टेबल स्क्रिप्ट पोस्ट कर सकते हैं? –
संबंधित: http://stackoverflow.com/questions/1897436/row-number-over-not-fast-enough-with-large-result-set-any-good-solution –