Sql实现既能实现分页查询,又能将表的总数据条数带出来

  之前做的一个项目的分页查询一直是用linq的方法,后来感觉速度非常慢,linq需要把数据都查询出来,然后再进行分页,这样会降低效率。后来想想能不能直接用sql语句直接执行出来,分页查询应该没什么难度,想到用BETWEEN AND语法,但是数据的总条数怎样随之一起查询出来呢?

  后来晚上查找了一番,了解到使用COUNT() OVER()就可以顺便将数据总条数查出来,就像这样:

SELECT * FROM
(
SELECT
ROW_NUMBER()OVER(ORDER BY ID) AS rowNumber,
COUNT(*)OVER() AS TOTAL,
*
FROM dbo.do_info AS I
)AS A WHERE A.rowNumber BETWEEN 100 AND 200

  表示接触程序时间不多,所以每次这样记录一下避免以后忘记,如果有哪里有问题的话,请大家指出来哈,共同学习

posted on 2015-12-09 14:20  会长大的幸福75  阅读(1537)  评论(0)    收藏  举报

导航