Man*_*ish 7 .net sql-server asp.net
我需要在网页上获取和显示数据,其记录数量可能会因大约500条记录到100万条记录的过滤器而异.
缓存在这里会有用吗,因为我认为记忆中的百万记录不是一个好主意.SqldataReader?
当然,分页是必须实现的.显示100万条记录是最糟糕的情况(All filter使用案例中的愚蠢!).
我应该使用连接架构(SqlDataReader)还是断开连接的架构(DataSet)?
Mik*_*scu 11
首先,想一想:显示100万条记录对任何用户都没有意义.因此,您必须考虑用户期望看到的内容.也许总结一下?!也许可以将这些记录分页为25或50或100条记录.这些方法中的任何一种都不需要您在内存中一次保存1 M条记录.
此外,当您对SQL数据库运行查询并使用SqlDataReader时,您将不会收到所有记录,而是SQL驱动程序将查询发送到SQL服务器,服务器将执行查询,准备结果集并创建服务器上的只进游标.然后,每次在SqlDataReader上调用Read()时,驱动程序将一次获取一条记录.如果使用使用延迟执行的LINQ to SQL,则行为非常相似.在您特别请求每一行之前(或除非),结果集不会被完全转移.
因此,一个简单的分页查询就可以解决问题.或者在其他情况下,某种汇总报告汇总来自这100万条记录的数据,一页或两页相关数据.
当然,如果你确实需要在页面中来回移动,那么某种缓存可能是有意义的,但是再考虑一下:用户实际想要浏览100万条记录的频率 - 可能永远不会.
最后一点,如果你实现了分页 - 确保用于实现分页的方法依赖于SQL Server一次发送一页数据而不是将所有100万条记录读入ASP.NET然后将本地分页数据的副本,因为这将非常低效和缓慢.以下是执行分页的SQL Server查询示例:SO问题#109232
| 归档时间: |
|
| 查看次数: |
10925 次 |
| 最近记录: |