1

我在一个页面上有两个 SqlDataSource 控件。一个加载高级数据,另一个根据您选择的高级项目加载更多详细信息。这是拥有超过 900,000 条记录的大型搜索的一部分,我正在寻找加快搜索速度的方法。无论是我可以添加到 SqlDataSource 的选项,我可以对 sql 查询执行的操作,还是使用诸如 ObjectDataSource 之类的替代方案。

我将 DataSourceMode 更改为 DataReader,因为我听说它更快并且使用更少的内存。我还注意到分页真的很慢。

我正在从我的这个网站http://mosesofegypt.net/post/2008/02/Building-a-grouping-Grid-with-GridView-and-ASPNET-AJAX-toolkit-CollapsiblePanel.aspx执行以下操作,但显然我的数据超过 900,000 条记录,我不确定如何将分页添加到第二个 gridview,因为现在,它只在顶级 gridview

4

4 回答 4

3

我认为您的数据源控件本身不需要成为任何优化的目标。它只会处理您从中获得的数据(意味着您应该优化您的 SQL)或在将其发送到 SQL 之前放入其中的数据(意味着您应该优化您的应用程序代码)。

于 2009-03-26T14:18:35.870 回答
1
  1. 我将从在 asp.net 中为您的数据进行服务器端分页开始。
  2. 我会确保索引您的数据库表以获得最佳性能。还可以使用查询分析器查看查询性能中的痛点。
  3. 如果您正在搜索,我建议您使用 SQL 服务器提供的全文索引。
于 2009-03-26T14:19:13.137 回答
0

当我过去必须跟踪大量数据时,我发现最好不要使用默认分页,而是覆盖以一次仅从数据库收集 10 或 20 行。您确实需要一个体面的索引过程,以便代码知道它正在显示哪 10 行或 20 行左右,但它确实加快了速度。

于 2009-03-26T15:07:23.023 回答
0

就个人而言,我会考虑使用 ObjectDataSource,并进行自定义分页。4GuysFromRolla.com 有一些关于如何进行自定义分页的重要提示。

一旦开始达到大量记录,SQLDataSource 中的默认分页非常慢/性能差。

原因?每次刷新数据的调用(更改页面、编辑记录等)都会再次获取所有数据……然后客户端会显示您实际所在的页面。

使用自定义分页和 ObjectDataSource...,您现在只能检索您真正需要的较小的记录子集。

于 2011-10-25T19:10:27.177 回答