在分页算法中,影响我们查询速度的关键因素有两点:top和not in。top可以提高我们的查询速度,而not in会减慢我们的查询速度,所以要提高我们整个分页算法的速度,就要彻底改造not in,同其他方法来替代它。
我们知道,几乎任何字段,我们都可以通过max(字段)或min(字段)来提取某个字段中的最大或最小值,所以如果这个字段不重复,那么就可以利用这些不重复的字段的max或min作为分水岭,使其成为分页算法中分开每页的参照物。在这里,我们可以用操作符“>”或“<”号来完成这个使命,使查询语句符合sarg形式。如:
select top 10 * from table1 where id>200
于是就有了如下分页方案: