没有合适的资源?快使用搜索试试~ 我知道了~
首页SqlServer常用的几种分页查询SQL语句介绍、对比以及在.Net下的使用
前言 在实际开发过程中,当数据量比较多的时候,大量的数据一下子展示到页面上是非常不可取的。所以我们通常要进行分页(这里的分页是指真分页),而不是前端JS实现的假分页。 最近的学习过程中,使用ASP.NET MVC配合Layui框架进行开发时,根据Layui Page传回的参数要进行分页操作(虽然EntityFramework提供了非常便捷的分页方法,但是SQL什么时候都不能忘掉吧O(∩_∩)O哈哈~)。索性对于分页SQL这一块,自己做一个系统的总结。 本篇博客针对于SQL Server数据库进行讨论 一、三种分页SQL语句的介绍和写法 示例数据库的字段:
资源详情
资源评论
资源推荐

SqlServer常用的几种分页查询常用的几种分页查询SQL语句介绍、对比以及在语句介绍、对比以及在.Net下的使用下的使用
前言前言
在实际开发过程中在实际开发过程中,当数据量比较多的时候当数据量比较多的时候,大量的数据一下子展示到页面上是非常不可取的。所以我们通常要进行分页大量的数据一下子展示到页面上是非常不可取的。所以我们通常要进行分页(这里的分页是指真分页这里的分页是指真分页),而不是前端而不是前端JS实现的假分页。实现的假分页。
最近的学习过程中最近的学习过程中,使用使用ASP.NET MVC配合配合Layui框架进行开发时框架进行开发时,根据根据Layui Page传回的参数要进行分页操作传回的参数要进行分页操作(虽然虽然EntityFramework提供了非常便捷的分页方法提供了非常便捷的分页方法,但是但是SQL什么时什么时
候都不能忘掉吧候都不能忘掉吧O(∩_∩)O哈哈哈哈~)。索性对于分页。索性对于分页SQL这一块这一块,自己做一个系统的总结。自己做一个系统的总结。
本篇博客针对于本篇博客针对于SQL Server数据库进行讨论数据库进行讨论
一、三种分页一、三种分页SQL语句的介绍和写法语句的介绍和写法
示例数据库的字段:
假设有100条数据,每页显示10条,我们取第3页数据来说
这里按照三种这里按照三种SQL的的破壳日从古到今进行介绍叭!的的破壳日从古到今进行介绍叭!
1.top+嵌套查询嵌套查询
介绍介绍:简单的来说就是简单的来说就是,我们需要第我们需要第21-30条数据条数据,我们先查前我们先查前20条条id为一个集合为一个集合,再从原表中取再从原表中取id不在这个集合中的前十条不在这个集合中的前十条;
写法写法:
select top 10 * from BigDataTable where id not in(select top 20 id from BigDataTable order by id) order by id
注注:
两个排序字段要保持一致两个排序字段要保持一致!
2.ROW_NUMBER()开窗函数开窗函数(支持支持SqlServer 2005版本以上版本以上)
介绍介绍:通过通过ROW_NUMBER()生成序号列生成序号列,根据序号列取需要数据根据序号列取需要数据
写法写法:我一般建立一个视图我一般建立一个视图(#^.^#)
create view View_Page
as
select *,ROW_NUMBER()over(order by id) as rowindex from BigDataTable
SELECT * FROM View_Page WHERE rowindex>=21 AND rowindex<=30
3.offset fetch(SqlServer 2012 版本以上版本以上)
介绍介绍:offset x rows=>跳过前跳过前x行行 fetch next y rows=>取之后的取之后的y行行
写法写法:
SELECT * FROM BigDataTable ORDER BY id OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY
注意注意:一定要排序吖一定要排序吖!
二、对比二、对比
本部分,我们用了一个含有1028135条数据的数据库。
分别使用上述三种SQL来取得1000001-1000020条数据来进行对比。
数据如下:
1.使用使用top+嵌套查询执行结果如下嵌套查询执行结果如下:
取十次查询时间求平均值取十次查询时间求平均值:((1.023+0.988+0.949+0.960+1.028+1.002+0.957+0.956+0.961+0.964))/10 =0.9788s
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0