【发布时间】:2017-09-20 20:01:27
【问题描述】:
我正在尝试在 asp.net 中绑定一个 gridview,但这需要我太多时间。我正在使用存储过程,但在 microsoft sql server management studio 中,存储过程只需要 2-3 秒。我的问题是当我加载 asp 页面时。填充我的网格视图需要 20-30 秒...有什么想法吗?
更新:我的问题出在我的存储过程中
SELECT
ROW_NUMBER() OVER
(
ORDER BY A.[ActiuniNumar] DESC
) as RowNum,
A.[Id],
A.[Societate_Id],
A.[Denumire],
A.[NrORC],
A.[CUI],
A.[CNP],
A.[Adresa],
A.[Localitate],
A.[Judet],
A.[Tip],
A.[ActiuniNumar],
A.[ActiuniSerie],
A.[ActiuniNumar] * [ValoareNominala] AS [ActiuniValoare],
CASE
WHEN S.[Capital] = 0 THEN 0
ELSE CAST(A.[ActiuniNumar] * 100 / S.ActiuniNumar AS decimal(18, 8))
END AS [ActiuniProcent],
A.[ActiuniNevandabileNumar],
A.[ActiuniNevandabileSerie],
A.[Diverse],
A.[SerieCI],
A.[Deleted],
A.[ModifiedBy],
A.[ModifiedAt]
INTO #Results2
FROM [dbo].[Actionar] A
INNER JOIN [dbo].[Societate] S ON A.[Societate_Id] = S.[Id]
WHERE 1 = 1
AND ((@ActiuniNumar IS NULL AND 1 = 1) OR (@ActiuniNumar IS NOT NULL AND (@ActiuniNumar = 0 AND A.[ActiuniNumar] <= 0) OR (@ActiuniNumar != 0 AND A.[ActiuniNumar] > 0)))
AND [Societate_Id] = @Id
AND ((@Filter = '' AND 1 = 1) OR (@Filter != '' AND (A.[Denumire] LIKE @Filter OR A.[NrORC] LIKE @Filter OR A.[CUI] LIKE @Filter OR A.[CNP] LIKE @Filter OR A.[ActiuniNumar] LIKE @Filter OR A.[SerieCI] LIKE @Filter)))
and A.[Deleted] = 0
ORDER BY A.[ActiuniNumar] DESC
SELECT * FROM #Results2 where RowNum BETWEEN(@pageIndex -1) * @pageSize + 1 AND(((@pageIndex -1) * @pageSize + 1) + @pageSize) - 1
我需要 20 秒才能运行..
【问题讨论】:
-
您可以从该存储过程中获得多少行?
-
@jgasiorowski 我正在使用成本分页,页面上只有 10 行
-
你应该显示一些我相信的代码
-
@jgasiorowski 代码是什么?
-
在浏览器向服务器发出请求和将数据绑定到视图之间,有很多地方可能会出错。不可能说出任何导致您的解决方案出现问题的原因。您应该指定您使用什么来调用 SP,您使用的是 mvc 还是 webforms 等。您的问题缺少这些信息
标签: asp.net stored-procedures gridview data-binding