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