在ASP.Net中分页数据库数据的最佳方法(SQL数据库VS Web服务器)

时间:2013-07-09 16:18:11

标签: asp.net sql-server sql-server-2008 session-variables

我已经实现了两种非常快速的方式来分页大型MS SQL Server数据库表,其中至少包含1,000,000个记录,但未能确定任何一种方法的优缺点,建议两者都会大大提高理解:

第一种是运行SQL查询并仅返回已过滤记录的主键值,指定可能为100-1000的TOP子句。然后可以将这些内容放入Web服务器上的会话变量中,并通过将主键值的子集提供回服务器来相应地进行分页。

对此有一个好处是,记录的过滤仅在用户最初执行搜索时发生一次,其次,如果需要,它可以一次翻阅整个记录集一个项目,例如在预览中此方法还提供了进一步过滤已过滤记录的一些好处,因为可以通过将主键值列表提供回SQL Server来确定可过滤选项 - 例如公共属性,标题,控制器等。

第二个选项是通过SQL Server执行过滤和分页,提供“每页记录数”和“页码数”等变量。

这样做的好处是没有必要使用用户会话阻塞Web服务器,这些用户会话的大小无疑至少每个都超过1000个字节,这只会导致长期的问题,因为网站的数量用户增加。相比之下,下行最终是我所列出的第一个选项的积极因素,例如缺乏确定仅具有单个页面或主键值子集的整个记录​​集的过滤选项的能力。在Web服务器上工作。

上述人员的想法是什么,特别是关于将结果的主键值存储在会话变量,内存,备用选项等方面?

1 个答案:

答案 0 :(得分:0)

我是那种认为数据库时间比Web服务器时间更有价值的人。但那是我的方法。 在您的情况下,如何检索数据?您是否使用DataSet / DataTables或使用Strong类型容器?为什么不在Web服务器端甚至客户端使用linq或其他过滤技术? (您可以向用户显示所有记录并使用javascript进行过滤)。