从DB加载GridView的数据,这是显示大量数据的最快方式吗?

时间:2016-11-24 10:30:00

标签: c# asp.net sql-server gridview

我正在开发一个应该在GridView中显示大量数据的网页。 显然我会使用某种分页。

我想知道的是做这种事情的最佳方式,这是什么规范?

每次GridView的每一页都应该连接数据库吗?我应该为第一页连接一次数据库并在某种后台任务中加载其余数据吗?我应该在后台预先加载几页数据,以减少用户的等待时间吗?

感谢任何建议。

请记住,我对编程比较陌生,谢谢!

3 个答案:

答案 0 :(得分:0)

只需比较为用户获取完整数据集的概率,然后选择合适的解决方案:

  • 如果用户需要您的第二页不大的机会(最新消息,相关搜索结果等) - 请勿加载您的所有数据。只需加载第一页。

  • 如果你的数据是顺序的并且它们是相关的,所以你真的知道在第一页用户应该/必须进入下一页之后 - 在用户使用时查看解决方案以在backgroud线程中加载下一页的数据当前页面的数据(流程任务或文档,批准订单等)。

  • 如果您的解决方案意味着 - 您的用户可以随机导航到网格中的页面并经常执行此操作(每个用户需要随机访问至少几页) - 查看解决方案以将所有数据加载到缓存中并生成寻呼机使用缓存的本地数据。

希望这有帮助。

答案 1 :(得分:0)

  1. 使用您使用的Control的虚拟化 - 任何网格或列表!这很重要,#1

  2. 设置一个中间层服务,它可以帮助您从数据库加载仅上下可见+/-几行。您可以通过查询中的游标执行此操作,或者通过LINQ扩展更简单地使用.Skip(count)和Take(count) - 这可以帮助您从集合的哪个位置读取多少行(或者您可以看到如果你不使用任何ORM,LinqPad如何在T-SQL中进行转换

  3. 不要对Control(网格或listvew)上的集合进行排序或过滤,通过DB侧的查询来进行排序 - 它在DB中的索引速度快了很多倍(!)

答案 2 :(得分:0)

使用SQL Server存储过程获取大量数据还会发送2个额外的参数分页Page NumberPage Size并从过程返回总计数。

Pagination with the stored procedure