C# 我们如何优化gridview中的记录?
我想从sqlserver表在gridview中绑定至少30000条记录。我想用grid view一次只绑定50条记录。网格还具有分页功能,当我单击下一页时,应显示下一页的50条记录,另一页的单击另一页的50条记录 我如何优化这个东西。我想,若30000条记录是绑定的,那个么网格应该像绑定的50条记录一样工作C# 我们如何优化gridview中的记录?,c#,asp.net,C#,Asp.net,我想从sqlserver表在gridview中绑定至少30000条记录。我想用grid view一次只绑定50条记录。网格还具有分页功能,当我单击下一页时,应显示下一页的50条记录,另一页的单击另一页的50条记录 我如何优化这个东西。我想,若30000条记录是绑定的,那个么网格应该像绑定的50条记录一样工作 谢谢,在SQL server上处理分页更有效。如果您只是让gridview处理分页,甚至是本地运行的数据源,它会将所有30000条记录从数据库加载到前端,然后检索页面的记录。您可以将grid
谢谢,在SQL server上处理分页更有效。如果您只是让gridview处理分页,甚至是本地运行的数据源,它会将所有30000条记录从数据库加载到前端,然后检索页面的记录。您可以将gridview绑定到LinqDataSource控件。据我所知,当它处理分页时,它只请求数据库中可见的行,而不是整个表。有一篇关于如何将GridView绑定到LinqDataSource的好文章。将
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并包括代码:。按照其他人的建议,有很多方法可以做到这一点。 我想补充一些 a) 从后端处理(这就是我在当前项目中的工作方式)
2) 如果您使用的是dotnet 3.0+版,您可以借助linq的方法Deepak,您有其他6个问题但没有接受其中任何一个问题的答案吗?您想进一步优化它的原因是什么?您已经在使用分页机制来优化获取和显示。
--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