精华内容
下载资源
问答
  • 分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为...
        PhotoSprite

    -- 建立表 --
    CREATE TABLE [TestTable] (
        [ID] [int] IDENTITY (1, 1) NOT NULL ,
        [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
        [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL
        [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
        [Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    GO

     

    -- 插入数据:(2万条,用更多的数据测试会明显一些) --
    SET IDENTITY_INSERT TestTable ON

    Declare @i int 
    Set @i=1 
    While @i<=20000 
    Begin 
        Insert Into TestTable([id], FirstName, LastName, Country,Note) 
        Values(@i, 'FirstName_XXX', 'LastName_XXX', 'Country_XXX', 'Note_XXX')

        Set @i=@i+1 
    End

    SET IDENTITY_INSERT TestTable OFF

     

    -- 分页方案一:(利用Not In和SELECT 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 表
    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
                        ) T
                 )
           )
    ORDER BY ID

    /*  方法
    SELECT TOP 页大小 *
    FROM 表
    WHERE (ID > (
                   SELECT MAX(id)
                   FROM (
                           SELECT TOP 页大小*页数 id
                           FROM 表
                           ORDER BY id
                        ) T
                 )
           )
    ORDER BY ID
    */

     

    -- 分页方案三:(利用SQL的游标存储过程分页)
    CREATE PROCEDURE sp_pagination
        @sql nvarchar(4000), --查询字符串
        @currentpage int, --第N页
        @pagesize int --每页行数
    AS

    SET NOCOUNT ON

    Declare @P1 int, --P1是游标的id
            @rowcount int

    exec sp_cursoropen @P1 output, @sql, @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

     

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

    通过SQL 查询分析器,显示比较:我的结论是:
    分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
    分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
    分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用

    转载于:https://www.cnblogs.com/godwar/archive/2008/03/06/1092864.html

    展开全文
  • sql server,mysql,oracle 三中数据库分页方式,很有必要的。   sql server: String sql = "select top " + pageSize + " * from students where id not in" + "(select top " + pageSize * (pageNumber-1) + " ...

    sql server,mysql,oracle 三中数据库分页方式,很有必要的。

     

    sql server:
    String sql =
    "select top " + pageSize + " * from students where id not in" +
    "(select top " + pageSize * (pageNumber-1) + " id from students order by id)" +
    "order by id";

     


    mysql:
    String sql =
    "select * from students order by id limit " + pageSize*(pageNumber-1) + "," +
    pageSize;

     


    oracle:
    String sql =
    "select * from " +
    (select *,rownum rid from (select * from students order by postime desc) where
    rid<=" + pagesize*pagenumber + ") as t" +
    "where t>" + pageSize*(pageNumber-1);

    展开全文
  • postgresql数据库分页实现方式: SELECT select_list FROM table_expression [LIMIT { number | ALL }] [OFFSET number] OFFSET说明在开始返回行之前忽略多少行。OFFSET 0和省略OFFSET子句是一样的。 如果OFFSET...

    postgresql数据库分页实现方式:

    SELECT select_list FROM table_expression [LIMIT { number | ALL }] [OFFSET number]

    OFFSET说明在开始返回行之前忽略多少行。 OFFSET 0和省略OFFSET子句是一样的。 如果OFFSET和LIMIT都出现了, 那么在计算LIMIT个行之前忽略OFFSET行。

     

    oracle数据库分页实现方式:

    SELECT * FROM ( SELECT rownum AS rnum, e.* FROM ( SELECT * FROM table ) e WHERE rownum <= 10 ) WHERE rnum >= 8;

    使用rownum实现。

     

    mysql数据库分页实现方式:

    //收到客户端{pageNo:1,pagesize:10}  
    select * from table limit (pageNo-1)*pageSize, pageSize;

    第一个参数代表开始查询的行数,第二个参数代表每页的行数。

     

    sqlserver数据库分页实现方式:

    //每页10条,取第31-40条数据。 
    //方法一:max/top 
    select top 10 * from a where id>(select max(id) from (select top 30 id from a order by id)a1) order by id 
    //方法二:row_number() 其中ROW_NUMBER()只支持sql2005及以上版本 
    select top 10 * from (select row_number()over(order by id)rownumber,* from a)a1 where rownumber>30

     

    展开全文
  • 几种SqlServer数据库分页方式[转载] 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [LastName] ...
    建立表:

    CREATE TABLE [TestTable] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    GO



    插入数据:(2万条,用更多的数据测试会明显一些)
    SET IDENTITY_INSERT TestTable ON

    declare @i int
    set @i=1
    while @i<=20000
    begin
    insert into TestTable([id], FirstName, LastName, Country,Note) values(@i, ''FirstName_XXX'',''LastName_XXX'',''Country_XXX'',''Note_XXX'')
    set @i=@i+1
    end

    SET IDENTITY_INSERT TestTable OFF



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

    分页方案一:(利用Not In和SELECT 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

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

    通过SQL 查询分析器,显示比较:我的结论是:
    分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
    分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
    分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用

    在实际情况中,要具体分析。
    posted on 2005-12-01 17:59 Mason 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/Mason/archive/2005/12/01/288675.html

    展开全文
  • 在 CYQ.Data 分页是内部集成的功能,针对不同的数据库,使用不同的分页形式。 1:Access:集成:使用3次Top分页2:MySql:集成,使用LimitN分页3:Sqlite:集成,使用LimitN分页4:Sql2000:外置存储...
  • 在 CYQ.Data 分页是内部集成的功能,针对不同的数据库,使用不同的分页形式。1:Access:集成:使用3次Top分页2:MySql:集成,使用LimitN分页3:Sqlite:集成,使用LimitN分页4:Sql2000:外置存储过程,使用临时表...
  • 分页方案一: ( 利用 Not In 和 SELECT TOP 分页 ) 语句形式: SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable ORDER BY id)) ORDER BY ID SELECT TOP 页大小 * ...
  • 数据库分页方式

    2016-08-15 14:33:55
    数据库 分页
  • 分页查询的方式:1.全部查询,在前台展示的时候,只展示其中的一部分。适用于数据库数据较少的时候。2.数据库获取数据的时候,只查询部分的数据,然后前台直接展示。适用于数据量大的时候。limit index ,lengthA...
  • 数据库分页实现方式

    2010-04-16 10:20:00
    不同数据库分页 收藏 ORACLE分页=========================================分页的宗旨是控制查询出来的数据个数,下面这条语句对于Oracl
  • 数据库分页

    2018-09-21 21:18:23
    1)前言:数据库分页,是一个常用重要的业务需要,实现的SQL方式有多种,需要了解不同的方式有何不同,更需要知道每一种的效率,若数据量很大时,效率是很重要的。 注:本文,以后会根据不同类型数据库和不同版本,...
  • 分页一般有3种方式,前端分页,后端分页,数据库分页,本文会一一说明 1.前端分页 前端分页主要的分页逻辑均在前端实现,后台只提供数据,页面初始化时,将数据赋予前端定义好的变量即可,格式为json,下面给出各端实现逻辑 ...
  • 数据库分页的实现

    2019-10-08 22:50:04
     分页技术主要分三种:客户端分页、数据库分页、服务器端分页。  客户端分页:客户端分页说的直白一点就是在前台进行分页。这种分页的方式减少了与数据库的交互次数,但主要不足之处在于它要先把所有的数据从...
  • 具体实现中,根据所用数据库、数据量、实现分页方式,选择分页实现快的方式实现。  一、MYSQL分页查询方法  MYSQL分页查询主要使用其自带的limit函数,但需根据查询量来决定具体的使用方式,如只有几千或几万...
  • 1. 通过数据库的ROW_NUMBER()Over() 函数 eg: select * from (select ROW_NUMBER()Over(order by dbkey desc) as rowid,UsersLoginName from PayClerk) B WHERE rowid between 1 and 20 pagesize*(pagindex-1)...
  • 数据库分页方式 数据库分页方式,优化加快了服务端数据的反馈;这里总结了常见的数据库的分页模式示例: 1、最简单便利的数据库: MYSQL select * from TABLE limit (curPage-1)*pageSize,pageSize 示例: ...
  • 实现数据库分页

    2017-07-30 21:27:32
    如果我们采用jdbc的方式连接数据库,那么不同的数据库就会有不同的分页语句。 //jdbc是(Java datasource connectivity)一种数据库连接技术,由一些写好的接口和类组成,sun公司已经写好了jdbcAPI,而各种数据库...
  • 用三种方法在数据库中进行分页,只需传入相关参数(表名,页大小,页索引等)就可以进行获得相应页的数据
  • 数据库分页显示的几种实现方式

    千次阅读 2019-01-20 23:57:32
    曾经面试有个人问我分页的几种实现方式和框架这些,现在才回,有点晚,这里只用了一种实现方式,利用spring boot的jpa中page对象的实现。还有数据库自带的limit语句,和SSM框架中的mybatis语句中常用,以后遇到了...
  • 数据库分页方式

    2013-09-24 06:36:35
    1.逻辑分页的第一种方式,利用ResultSet的滚动分页。步骤如下:  a.根据条件sql查询数据库。  b.得到ResultSet的结果集,由于ResultSet带有游标,因此可以使用其next()方法来指向下一条记录。  c.利用next()方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,564
精华内容 1,425
关键字:

数据库分页方式