博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用数据库分页
阅读量:6175 次
发布时间:2019-06-21

本文共 1818 字,大约阅读时间需要 6 分钟。

hot3.png

1、Oracle 分页

 

第一种:利用分析函数row_number() 方法

SELECT    *FROM    (           select t.*, row_number () over (ORDER BY t1.id) rowno        FROM            TABLE1    )  where rowno BETWEEN 21AND 40;

第二种:直接使用rownum 虚列(推荐

SELECT    *FROM    (        SELECT            t.*, rownum AS rowno        FROM            TABLE1    )WHERE    rowno BETWEEN 10AND 20

第三种:不使用between and 进行分页

 

 

SELECT * FROM

    (SELECT A.* ,  rownum r  

    FROM

        (SELECT  *  FROM msr_topic

        Where name like %hr%

        ) A

    WHERE rownum <= indexEnd

    ) B

WHERE r > indexStart;

 

总结:显然第二种方法比较好,第三种方法最差!因为不用order by语句,会提高检索数据的速度的,尤其数据量越大时,第二种方法快速检索数据越明显。oracle中慎用带有order by的分页。尤其是在oracle10g中,会出现会引起混乱,即相同记录会出现在不同页中。 

 

 

 

2、SqlServer 分页

 

 

第一种方法:通过TOP函数来实现(推荐

SELECT TOP 10  *  FROM TestTable  WHERE  (              id NOT IN  (        SELECT TOP 20  *  FROM TestTable ORDER BY id    )     )   ORDER BY ID

第二种方法:通过Max函数来实现

select top limit  * from table1   where id > (    select max  (id)     from    (        select top  ((page - 1) * LIMIT)  id from table1 order by id    )  as T   )ORDER BY    id

第三种方法:通过 ROW_NUMBER 函数+Top 来实现

SELECT    TOPLIMIT *  FROM (       SELECT top    LIMIT ROW_NUMBER () OVER (ORDER BY ReportID) AS RowNo    FROM TABLE) AS AWHERE    RowNo > page * 10

第四种方法:通过 ROW_NUMBER 函数+Between And 来实现

 

select * from    (select  *  ROW_NUMBER( )over( order by u_id )  as  row_id    from users    where u_name like %hr%    )  as  temp_usersWhere  row_id between  ${start}  and  ${end}

总结:

1)第一种方法有一个致命的缺点,就是它含有NOT IN字样,要换成用not exists来代替not in;

2)第二种方法注意ID必须唯一,不能使用复合主键,而且主键也必须是有规律的数字,否则无法比较

3)第三种方法ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ReportID),其中ReportID可以是联合主键。不用说 自带函数时最差的,不要使用这种方式。

4)与第三种方式一样,效率低下

 

3、mysql分页

select   *   from   table   limit   start , size

 

 

4、PostgreSQL 分页

 

 

select   *   from   table   limit  size offset start  

 

参考:

 

转载于:https://my.oschina.net/heweipo/blog/409166

你可能感兴趣的文章
scala匿名函数
查看>>
vlan技术【实现】vlan简介和SVI实现不同vlan间通信
查看>>
scrapy爬虫初步尝试
查看>>
陈松松:视频制作不出来,跟这7个思维有九成关系
查看>>
形参和实参有何区别
查看>>
我的友情链接
查看>>
MySQL表结构的导入和导出MySQL表结构的导入和导出
查看>>
JavaSE 学习参考:Map容器遍历
查看>>
salt模块命令
查看>>
基于TBDS的flume异常问题排查过程
查看>>
2017/5 JavaScript基础7--- 数组
查看>>
网络时常断网的解决办法
查看>>
第八次作业及答案
查看>>
linux 日志定时清理脚本
查看>>
java老司机面试题
查看>>
Guice AOP
查看>>
懒汉式单例
查看>>
java递归组装树形结构
查看>>
手把手教你自己写一个模糊搜索的下拉框
查看>>
.Net文档图像处理工具包GdPicture.NET发布v14.0.30,改进PDF/OCR生成速度
查看>>