zoukankan      html  css  js  c++  java
  • Sql 分页

    分页方案一:(利用Not InSELECT TOP分页)
    语句形式:
    SELECT TOP 10 *
    FROM TestTable
    WHERE (ID NOT IN
    (SELECT TOP 20 id
    FROM TestTable
    ORDER BY id))
    ORDER BY ID


    SELECT TOP
    页大小 *
    FROM TestTable
    WHERE (ID NOT IN
    (SELECT TOP
    页大小*页数 id
    FROM

    ORDER BY id))
    ORDER BY ID

    -------------------------------------

    分页方案二:(利用ID大于多少和SELECT TOP分页)
    语句形式:
    SELECT TOP 10 *
    FROM TestTable
    WHERE (ID >
    (SELECT MAX(id)
    FROM (SELECT TOP 20 id
    FROM TestTable
    ORDER BY id) AS T))
    ORDER BY ID


    SELECT TOP
    页大小 *
    FROM TestTable
    WHERE (ID >
    (SELECT MAX(id)
    FROM (SELECT TOP
    页大小*页数 id
    FROM

    ORDER BY id) AS T))
    ORDER BY ID

    -------------------------------------

    分页方案三:(利用SQL的游标存储过程分页)
    create procedure XiaoZhengGe
    @sqlstr nvarchar(4000), --
    查询字符串
    @currentpage int, --
    N
    @pagesize int --
    每页行数
    as
    set nocount on
    declare @P1 int, --P1
    是游标的id
    @rowcount int
    exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
    select ceiling(1.0*@rowcount/@pagesize) as
    总页数--,@rowcount as 总行数,@currentpage as 当前页
    set @currentpage=(@currentpage-1)*@pagesize+1
    exec sp_cursorfetch @P1,16,@currentpage,@pagesize
    exec sp_cursorclose @P1

    set nocount off

     -------------------------------------

     分页方案四:(利用SqlServer2005中的新特性ROW_NUMBER进行分页)

    Select * FROM (
      select ROW_NUMBER()Over(order by cf_id desc) as rowId,* from T_Test
    ) as mytable
    where rowId between 21 and 40


    其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
    建议优化的时候,加上主键和索引,查询效率会提高。

    通过SQL 查询分析器,显示比较:我的结论是:

    分页方案一:(利用Not InSELECT TOP分页) 效率较高,需要拼接SQL语句

    分页方案二:(利用ID大于多少和SELECT TOP分页)效率次之,需要拼接SQL语句

    分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用

    分页方案四:(利用SqlServer2005中的新特性ROW_NUMBER进行分页) 效率最高,但是仅支持2005以上的版本


  • 相关阅读:
    flash编程实例源代码下载
    js4:with,for in语句,windows,location对象的使用
    js3:数据类型,数组,String各个属性,以及字符串表达式用eval计算
    挺喜欢这个网站的
    C#Url传递中文参数时解决方法
    .NET设计模式系列文章《转》
    maven surefire plugin介绍
    spring-boot-maven-plugin 插件的作用
    github提交表情包
    接口管理工具
  • 原文地址:https://www.cnblogs.com/myssh/p/1394981.html
Copyright © 2011-2022 走看看