我对使用ASP.NET和SQL Server进行大数据集(100,000+条记录)分页的最佳实践感兴趣。
我之前使用过SQL Server来进行分页,虽然这似乎是一个理想的解决方案,但是在动态排序时会出现问题(需要使用case语句来确定列和ASC/DESC顺序)。我不喜欢这种方法,因为它不仅将应用程序与SQL细节绑定在一起,而且难以维护。
欢迎提供其他解决方案...
谢谢大家。
我对使用ASP.NET和SQL Server进行大数据集(100,000+条记录)分页的最佳实践感兴趣。
我之前使用过SQL Server来进行分页,虽然这似乎是一个理想的解决方案,但是在动态排序时会出现问题(需要使用case语句来确定列和ASC/DESC顺序)。我不喜欢这种方法,因为它不仅将应用程序与SQL细节绑定在一起,而且难以维护。
欢迎提供其他解决方案...
谢谢大家。
如果您使用Order by技术,每次翻页时都会对服务器造成相同的负载,因为您正在运行查询,然后过滤数据。
当我有非连接池环境的奢侈条件时,我会创建并保留连接,直到完成分页。在连接上创建一个#Temp表,其中只包含需要返回的行的ID,并向此行集添加一个IDENTITY字段。然后使用此表进行分页以获得最快的返回。
如果您受限于连接池环境,则#Temp表会在连接关闭时丢失。在这种情况下,您必须在服务器上缓存Id列表-永远不要将它们发送到客户端进行缓存。
我想对Raj的回答提出一个快速建议。如果您使用格式为##table的临时表,它将会被保留。但是,它也将在所有连接之间共享。
如果您在将要排序的列上创建索引,则此方法的成本要低得多。
Erick