常见的三种SQL分页方式



 
  1.  --top not in方式  
  2. select top 条数 *  from tablename  
  3. where Id not in (select top 条数*页数  Id from tablename)  
  4.   
  5.   
  6.   
  7. --ROW_NUMBER() OVER()方式   
  8.  select * from (   
  9.     select *, ROW_NUMBER() OVER(Order by Id ) AS RowNumber from tablename  
  10.   ) as b  
  11.   where RowNumber BETWEEN 当前页数-1*条数 and 页数*条数     
  12.   
  13.   
  14.   
  15. --offset fetch next方式  
  16. --SQL2012以上的版本才支持  
  17. select * from tablename  
  18.  order by Id offset 页数 row fetch next 条数 row only   



 

 

分析:在数据量较大时

top not in方式:查询靠前的数据速度较快

ROW_NUMBER() OVER()方式:查询靠后的数据速度比上一种较快

offset fetch next方式:速度稳定,优于前2种,但sql版本限制2012及以上才可使用

转载于:https://www.cnblogs.com/dongwenfei/p/7053747.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL SERVER 2008 中常见的三种分页方法是使用 OFFSET-FETCH、ROW_NUMBER() 和 TOP 子句。这些方法可以帮助我们在结果集中选择指定数量的行。 1. OFFSET-FETCH 分页方法:OFFSET-FETCH 子句是 SQL SERVER 2012 引入的,它可以用于从查询结果集中选择一段连续的行。例如,以下语句将从 employees 表中选择前 10 行: ``` SELECT * FROM employees ORDER BY employee_id OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY; ``` 2. ROW_NUMBER() 分页方法:ROW_NUMBER() 函数是 SQL SERVER 中一个强大的函数,它可以为结果集中的每一行分配一个唯一的数字。我们可以利用这个函数来实现分页。例如,以下语句将从 employees 表中选择第 11 到第 20 行: ``` SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY employee_id) AS row_num FROM employees ) AS T WHERE T.row_num BETWEEN 11 AND 20; ``` 3. TOP 分页方法:TOP 子句可以用来选择结果集中的前 N 行。例如,以下语句将从 employees 表中选择前 10 行: ``` SELECT TOP 10 * FROM employees ORDER BY employee_id; ``` 总结: 以上三种方法在实现分页时都可以起到作用,但各有优缺点。OFFSET-FETCH 分页方法是最简单、最直接的,但在处理大数据量时可能会出现性能问题。ROW_NUMBER() 分页方法可以更精确地选择指定行数,但也会增加查询的复杂度。TOP 分页方法最适合选择较少的行,但对于大数据量的表来说,它的性能也会受到影响。因此,在实际应用中,我们需要根据具体情况选择最合适的分页方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值