我想要從sqlserver表中的gridview綁定atleast 30,000條記錄。我想用網格視圖一次綁定50條記錄。網格也有分頁,當我點擊下一頁時,下一個50條記錄應該顯示,另一個下一頁點擊50條記錄。我們如何優化gridview中的記錄?
我該如何優化這件事。我希望如果30,000條記錄具有約束力,那麼網格應該作爲綁定的50條記錄工作。
謝謝,
我想要從sqlserver表中的gridview綁定atleast 30,000條記錄。我想用網格視圖一次綁定50條記錄。網格也有分頁,當我點擊下一頁時,下一個50條記錄應該顯示,另一個下一頁點擊50條記錄。我們如何優化gridview中的記錄?
我該如何優化這件事。我希望如果30,000條記錄具有約束力,那麼網格應該作爲綁定的50條記錄工作。
謝謝,
在SQL服務器上處理分頁效率更高。如果您只是使用gridview處理分頁,或者甚至是在本地運行的數據源,則它會將所有30,000條記錄從數據庫加載到前端,然後檢索頁面的記錄。
您可以將GridView綁定到LinqDataSource控件。據我所知當它處理分頁時,它只請求數據庫中的可見行,而不是整個表。關於如何將GridView綁定到LinqDataSource here有一篇很好的文章。
將GridView
綁定到ObjectDataSource
,並在兩者上啓用分頁。
在SQL方面,使用CTE來選擇所需的行。例如:
;WITH MyCTE ([row], [Item]) AS (
SELECT ROW_NUMBER() OVER (ORDER BY Id) [row], [Item]
FROM SourceTable
)
SELECT [row], [Item]
FROM MyCTE
WHERE [row] BETWEEN @startrow AND @startrow + @pagesize - 1
萬一有幫助,我給的是如何做到這一點在我的書中,使用異步I/O以及包括代碼的完整的高性能例如:Ultra-Fast ASP.NET。
其他人建議的方法有很多。 我想一些更添加到
一)從後端處理(這是我如何我當前的項目做)
--Usage : USP_DataListing 0,12
ALTER PROCEDURE [dbo].[USP_DataListing]
-- Add the parameters for the stored procedure here
(@StartIndex INT, @ItemsToDisplay INT)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @EndIndex INT
SET @StartIndex = @StartIndex * @ItemsToDisplay
SET @EndIndex = @StartIndex + @ItemsToDisplay
BEGIN
SELECT
SlNo
,Column(s)
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY GETDATE() DESC) AS SlNo
,i.Column(s)
FROM dbo.tblName i)X
WHERE X.SlNo BETWEEN @StartIndex+1 AND @EndIndex
END
2)如果你正在使用的dotnet版本3.0+你可以採取LINQ的方法Take() and Skip()方法
Deepak,任何你有6個其他問題,但沒有接受任何答案的原因的任何理由? – Tarydon 2010-01-08 08:41:25
@亨克:哦,對不起! – 2010-01-08 08:42:16
你想進一步優化它的任何理由?您已經在使用優化提取和顯示的分頁機制。 – A9S6 2010-01-08 08:44:50