在具有大量用户的站点上,应该使用代码或存储过程处理分页。如果您使用了缓存,请包括您的成功因素。
答案 0 :(得分:3)
就个人而言,我从来没有在SQL Server之外写东西。我在数据库级别执行此操作,就像您要分配了一百万条记录一样,如果您在应用程序层中检索它并将其分页,那么您已经支付了巨额费用。
答案 1 :(得分:3)
99.9%的时间,应该在数据库服务器上进行分页。但是,存储过程不需要这样做,事实上,许多存储过程解决方案依赖于游标并且效率很低。理想情况下,使用为您的数据库平台定制的单个SQL语句来仅检索您需要的记录,而不是更多。
答案 2 :(得分:2)
我会在数据库级别进行。谈到sql server 2005,我会使用新的ROW_NUMBER()函数,看看: Paging SQL Server 2005 Results
典型的sql将是:
SELECT Row_Number() OVER(ORDER BY UserName) As RowID, UserFirstName, UserLastName
FROM Users
WHERE RowID Between 0 AND 9
在这里http://aspnet.4guysfromrolla.com/articles/031506-1.aspx你可以看到它是如何运作的,并通过Scott Mitchell检查一些基准。
答案 3 :(得分:1)
大多数数据库供应商都在数据库中提供丰富的分页支持。利用它;-p请注意,它不必是一个存储过程来执行此操作(我将支持永远运行的存储过程与特别命令争论)。
顺便说一句,许多框架也有效地为您做这件事。例如,在.NET 3.5(使用LINQ)中,您可以使用Skip()
和Take()
来执行db中使用的分页。
答案 4 :(得分:0)
我认为 取决于 有关要分页的记录数量。例如,您有100条要分页的记录我认为不需要SQL分页来执行此操作。我总是试图记住KISS原则和过早优化。