MS-SQL分页not in 方法改进之使用Max\Min

系统 1772 0

先看下表中共有多少条数据:

MS-SQL分页not in 方法改进之使用Max\Min

一百二十多万条,呵呵。

sql语句:

        
          declare
        
        
          @d
        
        
          datetime
        
        
          set
        
        
          @d
        
        
          =
        
        
          getdate
        
        
          ()

        
        
          select
        
        
          top
        
        
          10
        
         ID,U_Name,U_Age,U_Sex,U_Address 
        
          from
        
         Test1 
        
          where
        
         ID 
        
          not
        
        
          in
        
         (
        
          select
        
        
          top
        
        
          9990
        
         ID 
        
          from
        
         Test1 
        
          order
        
        
          by
        
         ID) 
        
          order
        
        
          by
        
        
           ID 

        
        
          select
        
        
          [
        
        
          not in方法升序分页执行花费时间(毫秒)
        
        
          ]
        
        
          =
        
        
          datediff
        
        (ms,
        
          @d
        
        ,
        
          getdate
        
        
          ()) 


        
        
          declare
        
        
          @s
        
        
          datetime
        
        
          set
        
        
          @s
        
        
          =
        
        
          getdate
        
        
          ()

        
        
          select
        
        
          top
        
        
          10
        
         ID,U_Name,U_Age,U_Sex,U_Address 
        
          from
        
         Test1 
        
          where
        
         ID 
        
          >=
        
        (
        
          select
        
        
          max
        
        (ID) 
        
          from
        
         (
        
          select
        
        
          top
        
        
          9991
        
         ID 
        
          from
        
         test1 
        
          order
        
        
          by
        
         ID) 
        
          as
        
         T) 
        
          order
        
        
          by
        
        
           ID

        
        
          select
        
        
          [
        
        
          Max方法升序分页执行花费时间(毫秒)
        
        
          ]
        
        
          =
        
        
          datediff
        
        (ms,
        
          @s
        
        ,
        
          getdate
        
        
          ()) 


        
        
          declare
        
        
          @t
        
        
          datetime
        
        
          set
        
        
          @t
        
        
          =
        
        
          getdate
        
        
          ()

        
        
          select
        
        
          top
        
        
          10
        
         ID,U_Name,U_Age,U_Sex,U_Address 
        
          from
        
         Test1 
        
          where
        
         ID 
        
          not
        
        
          in
        
         (
        
          select
        
        
          top
        
        
          9990
        
         ID 
        
          from
        
         Test1 
        
          order
        
        
          by
        
         ID 
        
          desc
        
        ) 
        
          order
        
        
          by
        
         ID 
        
          desc
        
        
          select
        
        
          [
        
        
          not in方法降序分页执行花费时间(毫秒)
        
        
          ]
        
        
          =
        
        
          datediff
        
        (ms,
        
          @t
        
        ,
        
          getdate
        
        
          ()) 


        
        
          declare
        
        
          @q
        
        
          datetime
        
        
          set
        
        
          @q
        
        
          =
        
        
          getdate
        
        
          ()

        
        
          select
        
        
          top
        
        
          10
        
         ID,U_Name,U_Age,U_Sex,U_Address 
        
          from
        
         Test1 
        
          where
        
         ID 
        
          <=
        
        (
        
          select
        
        
          min
        
        (ID) 
        
          from
        
         (
        
          select
        
        
          top
        
        
          9991
        
         ID 
        
          from
        
         Test1 
        
          order
        
        
          by
        
         ID 
        
          desc
        
        ) 
        
          as
        
         T) 
        
          order
        
        
          by
        
         ID 
        
          desc
        
        
          select
        
        
          [
        
        
          Min方法降序分页执行花费时间(毫秒)
        
        
          ]
        
        
          =
        
        
          datediff
        
        (ms,
        
          @q
        
        ,
        
          getdate
        
        ())
      

MS-SQL分页not in 方法改进之使用Max\Min

MS-SQL分页not in 方法改进之使用Max\Min

分页效率一目了然!

两种方法的不同点之一就是计算第二个top中的值

not in 中计算公式为:

        pgSize 
        
          *
        
         (pgNo 
        
          -
        
        
          1
        
        )
      

max\min中计算公式为:

        ((pgNo
        
          -
        
        
          1
        
        )
        
          *
        
        pgSize
        
          +
        
        
          1
        
        )
      

pgNo为当前第几页,pgSize为每页几条数据。

MS-SQL分页not in 方法改进之使用Max\Min


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论