当前位置:首页 > 系统运维 > 正文内容

sql server分页的两种 *** 比较

a8116255316年前 (2010-09-13)系统运维12

在sql server数据库中,假如一个查询结果数据量比较大,就需要在查询的时候分页,每次只返回其中一页。接下来的SQL server内容就将为您讲解比较sql server分页的两种 *** ,假如您对sql server分页感兴趣的话,不妨一看。

sql server分页之一种 *** :

思路是根据页号取出两部分数据,比如取出前90条,然后取出前100条,然后比较取出两次结果的差集。

在30万条记录的情况下,假如只分100页(结果有10000条记录),大约需要1分半钟。索引建得好的话,1分钟左右。

//select * from //这一句是不能修改的了,因为它是从结果中读取,所以必须要用*

//(select top @h_count (@filedlist) from @tableName .....) as big //取出符合条件的上限的记录

//where

//big.guid   //这里是关键,根据主键从下限结果中过滤掉重复的记录(只留下不同的数据,也就是求交集)

//not in

//(select top @l_count guid from @table .....)//下限

//order @orderby  //原来的格式,这里只保留了orderby之后的,应该保留条件之后所有的,包括gruopby什么的

函数类似如此:

  public string MakeSqlPager(string sourceSql,int pageIndex)

  {

   //使用默认页面大小

   string orderbyStr=sourceSql.Substring(sourceSql.ToLower().IndexOf("order by"));

   int index=sourceSql.ToLower().IndexOf("select");

   string bigRes="("+ sourceSql.Insert(index+6," top "+((pageIndex+1)*_pageSize).ToString()+" ")+") as big";

   string *** allRes="("+ sourceSql.Insert(index+6," top "+(pageIndex*_pageSize).ToString()+" ")+")";

   return "select * from "+bigRes+" where big.guid not in "+ *** allRes+" "+orderbyStr;

  }

这种 *** 还可以改进,就是第二次取过滤时从之一个的结果里面过滤。

sql server分页第二种 *** :

掐头去尾,程序还没写

SELECT * FROM

(

  SELECT TOP 100 * FROM

  (

    SELECT TOP 100000 * FROM pagetest ORDER BY regt ASC

   ) as a

  ORDER BY regt desc

) as b

 ORDER BY regt ASC

测试了一下,大约用时间29秒。

比较:

之一种 *** 的效率很低,猜测是因为多次需要循环比较,时间复杂度要高一个等级。比如,这种 *** 的响应时间和所取得的页号有很大关系。

第二种 *** 还是可以接受的,和页号无关,但是也需要两次比较。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/22374.html

分享给朋友:

“sql server分页的两种 *** 比较” 的相关文章

windows 7系统如何设置休眠时不断网以便继续完成下载

windows 7系统如何设置休眠时不断网以便继续完成下载

在Windows 7系统的默认设置中,当Windows 7系统处于休眠状态时,会同时断网的。如此一来,无论你正在使用迅雷还是快车等下载工具,同样可以在休眠状态下继续完成下载,最大限度做到从身边的小事开始支持环保。下面我们就详细介绍操作步骤,帮助Windows 7系统用户实现这一节能目标。 首先需要...

如何设置Win 7通知栏重新显示电源按钮

如何设置Win 7通知栏重新显示电源按钮

有些使用本本的朋友可能会发现,右下角通知栏区域会无法显示电源按钮,导致在插上电源或者是使用电池的时候都无法进行区分。造成这种情况大部分都是因为使用了第三方修改过的系统版本或者对于系统优化过度,所以今天就来解决这个问题。 第一步:在开始菜单的搜索窗口输入“gpedit.msc”,进入组策略编辑器,依...

Windows7开机后出现黑一下屏性能降低

Windows7开机后出现黑一下屏性能降低

打开IE浏览器的时候、聊QQ的时候、玩游戏的时候… … 这到底是谁惹的祸呢? 很多人都知道Windows 7桌面特效全部开启会使系统性能降低,那到底是哪个特效导致的这一情况呢? 解决办法: 右键计算机,高级系统设置-性能-设置-关闭”任务栏和开始菜单使用动画“和”最大化和最小化动态显示窗口“...

上帝不止一个 更多Windows7 快捷模式.

上帝不止一个 更多Windows7 快捷模式.

国外媒体CNET NEWS就这个“上帝模式”和微软Windows部门主管Steven Sinofsky进行邮件交流后得知,这其实只是众多快捷方式中的一个,Sinofsky在邮件里给出了十多个这类快捷方式的关键字符串。 它们的建立方法和之前的“上帝模式”一样,在任意位置新建的一个文件夹,然后改名即可...

3个实用的windows 7 DOS操作系统技巧

3个实用的windows 7 DOS操作系统技巧

       1. 快速复制粘贴文字   有时我们需要复制命令提示符窗口中的某些文字内容,但是之前的Windows系统中常规的复制粘贴方法是无效的,而在Windows 7中我们可以通过简单方法来复制文字:首先在任意位置右击鼠标并选择“标记...

windows 7禁用粘滞键(连续按 Shift 五次)的方法

windows 7禁用粘滞键(连续按 Shift 五次)的方法

我们都知道连续按 Shift 五次可以启用或关闭粘滞键,但是假如我们不需要粘滞键,想要将它禁用该怎么设置呢?现在小编就教你解决这个问题的方法吧。 具体操作步骤如下: 1、首先依次点击“开始—控制面板—轻松访问中心—使键盘更容易进行使用”项; 2、在弹出来的界面中,取消勾选“启用粘滞键”...