1、为什么要分页?
当显示数据的时候,我们不会一下子把所有的数据都显示出来,比如说表中有一万条数据,难道我们要把一万条数据都一次性的显示出来吗?!即便显示给用户了,用户也看不过来。因此,不论是从效率的角度还是从用户的观看的角度,只查询部分来给用户显示就可以了。这样速度又快,用户看起来也方便啦。这也就要求从很大的表中查询一小部分显示给用户就可以了,那么这一小部分的数据就是分页实现的。
2、分页的本质:从一个大数据中查询一小部分出来。
3、分页的前提:
要分页查询,或者分页显示之前,首先要确定按照什么排序,然后才能确定哪些记录应该在第一页,哪些记录应该在第二页。
4、分页的方法:top分页法和ROW_NUMBER()方法。
5、top分页法:
5.1、思想:首先要排序,然后要查哪一页的时候,就把哪一页之前的数据的ID查询出来,再从总数据中把这些ID排除掉,剩下的就是你没看过的,再把没看过的排个序,最后取前N个就可以了。
5.2、具体实施:
select top(pageSize) * from 表名 where 列名 not in(select top(pageSize*(pageIndex-1)) 列名 from 表名 order by  列名 asc)order by 列名;
如:select top (pageSize) * from Student where autoId not in( select top(pageSize*(pageIndex-1)) autoId from Student order by autoId asc) order by autoId;
 
6、使用row_number()实现分页:
6.1、top分页是老早之前的分页方法,效率并不是很高。SQLServer2005以后出现了row_number()分页方法。
6.2、分页思路:
先把现有的数据重新编号,然后根据用户要查看的每页记录条数,以及要查看第几页。确定应该查询第几条到第几条。
6.3、具体实施:
先排序,然后编号。
select *,Rn=row_number() over(order by CustomerId asc) from Customers;
最后实现:每页显示7条,要查看第8页。
select * 
from(select *,Rn=row_number() over(order by CustomerId asc) from Customers) as t
where t.Rn between (8-1)*7+1 and 8*7;
 
select * 
from (select Rn=row_number()over(order by autoId asc),* from Student)as s
where s.Rn between (3-1)*7+1 and 3*7;
select 
    tSName,tsAge,tClassName
from
    TblStudent as ts inner join TblClass as tc on ts.tSClassId=tc.tClassId;
 
 
select 
    tSName,tsAge,tClassName
from
    TblStudent as ts inner join TblClass as tc on ts.tSClassId=tc.tClassId
where ts.tSAge>20;
 
select 
    t1.tSName,t1.tsAge,t2.tClassName,t3.tScore 
from
    TblStudent as t1 inner join TblClass as t2 on t1.tSClassId=t2.tClassId
inner join TblScore as t3 on t1.tSId=t3.tsId;
 
 
 
总结:
当查询第一页的时候,用top方法,效率最高;
除了查询第一页都用row_number()实现分页。

SQLServer分页的更多相关文章

  1. sqlserver分页;mysql分页;orcale分页 的sql 查询语句

    一,sqlserver分页: )) ID FROM 表名 AS 表名1_1 ORDER BY ID)) ORDER BY ID; 二:mysql分页 )*每页显示的数据条数,当前页码 * 每页显示的数 ...

  2. SQLServer分页查询存储过程

    项目中用到的SQLServer分页查询存储过程. [存储过程] create PROCEDURE prcPageResult -- 获得某一页的数据 -- @currPage int = 1,     ...

  3. sqlserver 分页模糊查询

       积少成多 ----  仅以此致敬和我一样在慢慢前进的人儿 问题: 在sqlserver 进行模糊查询,出现问题 最初使用“concat”,进行拼串操作,如下所示: <select id = ...

  4. 高效的SQLSERVER分页查询的几种示例分析

    Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...

  5. 真正高效的SQLSERVER分页查询(多种方案)

    Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...

  6. 四种方式实现SQLServer 分页查询

    SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null identity, names varchar( ...

  7. SQLSERVER分页查询

    转:http://blog.csdn.net/qiaqia609/article/details/41445233   Sqlserver数据库分页查询一直是Sqlserver的短板,   第一种方案 ...

  8. Sqlserver分页的问题

    好久没有用SqlServer了,今天写了一个分页,遇到了小问题,本着温故而知新的道理,再来随便写些什么吧. 语句是这样的 string sql=“select * from ( select*,(ro ...

  9. 常用的几种 SQLServer 分页查询方式实现

    SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null identity, names varchar( ...

  10. SQLserver分页查询实例

    Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...

随机推荐

  1. Linux_install jdk

    Linux安装JDK步骤 1.先从网上下载jdk(jdk-7u1-linux-i586.rpm),下载地址:http://www.oracle.com/technetwork/java/javase/ ...

  2. sudo gedit xx warning

    When I sue command "sudo gedit xx", it appeas several warning: gedit:): IBUS-WARNING **: T ...

  3. angularJs项目实战!04:angularjs的性能问题

    上一篇文章中我花了很多口舌去介绍angularjs是一个中型框架,面对大型应用时少不了第三方类库的配合.而我的核心议题是:如何以angularjs的思路使用其他类库,这里jquery是最好的例子了,谁 ...

  4. LED驅動芯片對LED壽命的影響

    5050年,領導作為一種新型節能光源在世界和中國有非常高的熱情和偉大的問題,不得不贏得市場占有率從室外到室內照明應用,中國也如雨后春筍般涌現在大型和小型LED照明企業.鑒于LED照明的主要原因是其促進 ...

  5. QT 让窗口(或控件)居中

    代码如下: XXX::XXX(QWidget *parent /* = 0 */) { .................. //注意,resize一定要放在这段代码的前面 resize(300, 3 ...

  6. Bug解决过程复盘

    反思了下,解决问题无外乎3w1h when where who how 就是查询出来的事情多了,现在不知道哪个地方出问题,应该根据日志一步一步梳理,查看每一步的输出结果是否与预期一致 顺藤摸瓜 觉得不 ...

  7. 黑马程序员_Java泛型

    泛型 概述: ClassCaseException:类型转换异常. 代码中不加泛型,编译没问题,运行可能会发生异常.但是用户解决不了,这样程序就存在安全隐患.所以我们希望在编译时期就能看出问题,程序员 ...

  8. Android 按钮按下效果

    <?xml version="1.0" encoding="utf-8"?><selector xmlns:android="htt ...

  9. 从此走上一条iOS程序猿不归路。。。

    新的城市,新的生活!前不久刚刚结束了苦逼的面试找工作之旅,期间也小有收货,如今正处年底工作闲暇之余,将前一阵子陆陆续续的总结整理了一下,本人菜鸟程序猿一只,水平有限,本文总结的知识不算深入,比较浅显, ...

  10. hibernate之关系映射上

    分别创建user,farm,user_general三张表 create table user( uuid bigint not null auto_increment, name ), age in ...