我在数据库中有很多记录,而且我有一个控制页面来记录这些记录。如何为每个页面选择记录?例如,我需要从第51条记录到第100条记录中选择记录。我不能使用LINQ表达式。我正在使用dataobjects 3.9。 所以我从
开始Query q = new Query("select SomeClass objects");
答案 0 :(得分:1)
使用此查询:
Query q = new Query("select top 100 SomeClass objects");
据我记忆,在DO39的情况下无法指定.Skip
- 类似条件,因此您应该手动执行此操作(例如,将.Skip
应用于您可以使用的枚举)
在这种情况下会有明显的性能影响,但在计算复杂性方面并不重要。这样做的唯一影响是SQL Server会向客户端发送更多行,但是其他所有必须执行的工作仍然是相同的。
说明这一点的一个例子:
如果您要求Google向您展示第1000页的结果,那么无论如何都会如此 找到与您的查询相关的所有文档,计算匹配排名 他们中的每一个,将其排序为至少前1000页的最佳页面 匹配排名,只有在完成所有这项工作后,它才能给你 第1000页。
因此,如果有1,000,000,000,000个文件,则计算 相比之下,向客户端发送10K行的复杂性很小 完成所有其他工作。
另请注意,分页的整个想法是显示整个数据集的一小部分。因此,如果您的用户需要分页到例如第1000页,设计有问题。只有两种情况:
没有中间案例。