sqlserver数据库分页查询技术

sqlserver数据库分页查询技术

ID:41514650

大小:122.73 KB

页数:10页

时间:2019-08-26

sqlserver数据库分页查询技术_第1页
sqlserver数据库分页查询技术_第2页
sqlserver数据库分页查询技术_第3页
sqlserver数据库分页查询技术_第4页
sqlserver数据库分页查询技术_第5页
资源描述:

《sqlserver数据库分页查询技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、SQLServer数据库分页查询技术1•引言在列表查询时由于数据量非常多,一次性查出来会非常慢,就算一次查出来了,也不能一次性显示给客户端,所以要把数据进行分批查询出来,每页显示一定虽的数据,这就是数据要分页。2•常用的数据分页方法我们经常会碰到要収11到m条记录,就是有分页思想,下而罗列一下般的方法。我本地的一张表tbl_FlightsDetail,有300多W记录,主键FlightsDetaillD(Guid),要求按照FlightsDet^illD排序取3000001至IJ3000010之间的10条记

2、录,也是百万级。方法1定位法(利用工D大于多少)语句形式:selecttop10*fromtbl_FlightsDetailwhereFlightsDetailID>(selectmax(FlightsDetaillD)from(selecttop3000000FlightsDetaillDfromtbl_FlightsDetailorderbyFlightsDetailZCD)ast)orderbyFlightsDetaillD执行计划:J無1.j褪r执的划査询1:(与该扌丄有关的)查诃片销:1D0*se

3、lecttop10•froa.tbl^FiightsDetailwhereFlightsDetailID>(selectmax(FlightsDetaillD)fioz(sslecttop3000000FlightsDetaillDfioa9血內对行.(local)(10.0SP2)byc010-PCbyc010(54)Byc.OrderCenter

4、00:00011106先杳出top300000,再聚合取这个集合中最人的Idl,再过滤id大于idl的集合(上图中使用到索引),再取top10条。方法2(利

5、用NotIn)语句形式:selecttop10*fromtbl_FlightsDetailwhereFlightsDetaillDnotin(selecttop3000000FlightsDetaillDfromtbl_FlightsDetailorderbyFlightsDetaillD)orderbyFlightsDetaillD执行计划:勺査S己戍功执行.(Izl)(10QSP2)byc010-PCbyc010(54)Byc.OrderCenter

6、00:00:08

7、10行和方法一类似,只是过滤wh

8、ere条件不一样,这里用到的是notin,上图中没有用到索引,耗吋8秒。如果FlightsDetaillD不是索引的话,方法1和该方法将差不多。方法3(利用颠颠倒倒top)语旬形式:selecttop10*from(selecttop3000010*fromtbl_FlightsDetailorderbyFlightsDetaillD)astorderbyt.FlightsDetaillDdesc执行计划:先取前I何3000010条记录,再倒序,这时再取前Mi10条即是300001到300010条记录,没有

9、用到索引,耗时秒方法4(ROW_NUMBER()函数)语句形式:select*from(select*zROW_NUMBER()OVER(ORDERBYFlightsDetailID)asrankfromtbl_FlightsDetail)astwheret•rankbetween3000001and3000010执行计划:©结果二箱T3执行计划査词1:(芍後批有关的)査询丹桶:100*3elect*from[select*fR0W_NUMB£R()OVER(ORDERSYFlightsDetaillD)a

10、mranZfromt&l_FlightsDetail)amtwheret・rankbetween30033菇尿选署<^=3箭几行<=J序列!I搠(Filter)(Tcp>Scalar)皿开隼:"开餡:09UD段Segzent)开餡:0%(Clustered:.[匸bl.FlxghsDe二匸1].[P兀TBL.FLItHT—齐销:99涉壹词已成功执行.(local](10.0SP2)byc010-PCbyc010(54)Byc.OrderCenter00:aH)210fjSql2005版本或以上支持,也没

11、用到索引,耗时2秒,速度还不错。方法5(利用TN)此方法是由金色海洋(jyk)阳光男孩回复的,飞常感谢,语句形式:selecttop10*fromtbl_FlightsDetailwhereFlightsDetailIDin(selecttop10FlightsDetailIDfrom(selecttop3000010FlightsDetailIDfromtbl_FlightsDetailorderbyFligh

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。