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. php global范例

    Example #1 $GLOBALS 范例 <?phpfunction test() {    $foo = "local variable"; echo '$foo in ...

  2. 求最小生成树(Prim算法)(1075)

    Description 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经给出了部分代码,你只需要完善Prim算法即可. Input 第一行为图的顶点个数n    ...

  3. MySQL触发器之审计功能(转)

    [导读] 最近ITPUB技术论坛特意组织网络性讨论活动,关于数据库审计的话题,分享各自公司如何实现数据库审计.个人经验和构想,以及数据库审计的技巧,刚好有网友发了一个典型的审计需求,要帮他分析,以及教 ...

  4. 关于Android WebView内容不同屏幕兼容处理

    最近团队里项目开发APP时,其中有个界面要用到WebView来显示,而不用原生的控件. 开发这个界面的时候遇到一个问题,就是Android的碎片化导致有众多屏幕分辨率,不同分辨率的屏幕对这个界面Web ...

  5. SVM及其对偶

    引自 http://my.oschina.net/wangguolongnk/blog/111349 1. 支持向量机的目的是什么? 对于用于分类的支持向量机来说,给定一个包含正例和反例(正样本点和负 ...

  6. DbUtility-第一次接触

    DbUtility这个以前就知道,可是由于底层是4.5的框架,我就一直没有仔细看过,最近自己的开发框架升级到了4.5,就开始学习这个组件. 总体来说,这个组件用起来非常简单.举例说明: await d ...

  7. 监视系统3389的VBS脚本

    Title: 监视系统3389的VBS脚本 --2010-10-27 19:56 从网上找的,不知道是不是NP写的那个 ---------------------------------------- ...

  8. pm2 安装使用

    pm2 是全新开发的进程守护服务, 同时集成了负载均衡功能. 以及开机启动, 自动重启有问题进程. 还可以查看各服务进程状态. 使用方法参照:https://github.com/Unitech/pm ...

  9. jQueryMobile之listview

    效果如下: data-inset="true":为圆角 data-filter="true":带着过滤输入框 <!DOCTYPE html> < ...

  10. Android UI主线程与子线程

    一个Android 程序默认情况只有一个进程,但是一个进程可以有多个线程.其中有一个UI 线程也称为UI主线程,UI Thread在Android程序运行的时候就被创建,主要是负责控制UI界面的显示. ...