有关加速SqlDataSource的提示?

时间:2009-03-26 14:15:57

标签: c# asp.net sql-server tsql sqldatasource

我在页面上有两个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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

  1. 我将从asp.net的数据服务器端分页开始。
  2. 我会确保索引数据库表以获得最佳性能。还可以使用查询分析器查看查询性能中的难点。
  3. 如果您正在搜索,我建议您使用SQL Server提供的全文索引。

答案 2 :(得分:0)

当我以前必须跟踪大量数据时,我发现最好不使用默认的pagin,而是覆盖从数据库中一次只收集10或20行。你确实需要一个不错的索引过程,所以代码知道它显示的是10行或者20行,但它确实加快了速度。

答案 3 :(得分:0)

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

一旦开始获得大量记录,SQLDataSource中的默认分页就会非常慢/性能不佳。

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

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