zoukankan      html  css  js  c++  java
  • Oracle、MySql、SQLServer 数据分页查询

    (一)、 mysql的分页查询

            mysql的分页查询是最简单的,借助关键字limit即可实现查询

    /*

    * sql:可以是单表的查询语句,也可以是多表的联合查询语句

    * firstIndex:其实的索引

    * pageSize:每页显示的记录数

    */

    select * from (sql)  limit firstIndex,pageSize

    (二)、sqlserver2005的分页查询

        在sqlserver2005之前一直借助top关键字来实现分页查询,不过效率低,在sqlserver2005及其之后的版本都使用row_number()解析函数来完成分页查询,效率有了很大的提高,不过sql语句比较复杂

    /*

    * firstIndex:起始索引


    * pageSize:每页显示的数量

    * orderColumn:排序的字段名

    * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

    */

    select top pageSize * from (select row_number() over(order by orderColumn) as rownumber,* from(sql) as o where rownumber>firstIndex;

    (三)、oracle分页查询

        接下来重点说说oracle的分页查询,oracle的分页查询方法相对来说要多点,ROWNUM、row_number(),今天主要将两种效率稍好的分页查询语句。

    ①ROWNUM查询分页通式:

    /*

    * firstIndex:起始索引

    * pageSize:每页显示的数量

    * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

    */
    select * from(select a.*,ROWNUM rn from(sql) a where ROWNUM<=(firstIndex+pageSize)) where rn>firstIndex

      ②row_number()解析函数分页查询通式:

    * firstIndex:起始索引

    * pageSize:每页显示的数量

    * orderColumn:排序的字段名

    * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

    */
    select * from(select * from(select t.*,row_number() over(order by orderColumn) as rownumber from(sql) t) p where p.rownumber>firstIndex) where rownum<=pageSize

    对于oracle的分页查询,特地选出这两种实现方式是因为这两者各有千秋

         首先, 我们知道在ROWNUM查询的方式中,在第二层的sql语句中有个"where ROWNUM<firstIndex+pageSize",根据oracle的原则,第二层查询语句会嵌入到最内层中进行查询,也就是说,最开始执行的查询语句类似于:select * from wyuse where rownum<(firstIndex+pageSize) order by id asc,从数据表中查询出(firstIndex+pageSize)条记录,所以如果这个值很小的话,效率会很好,如果对于大数据量的表单,这个值如果是上千,比如:select * from wyuse where rownum<(5000) order by id asc,这样一开始会选出5000条记录,效率自然会慢很多....

         不过,相对于ROWNUM,row_number()方式可能通过简化可以少一层嵌套,不过貌似对于大数量的查询,效率也高不到哪里去.....不过,对于大数量如果为表建立索引再结合row_number()效果会很好(未测试)

                                                                                                                                                            ===========地狱的镰刀  

    复制代码
  • 相关阅读:
    null和undefined的区别
    百度小程序组件引用问题
    hbase优化操作与建议
    Hbase Rowkey设计原则
    kafka容器报内存不足异常(failed; error='Cannot allocate memory' (errno=12))
    Hbase安装
    四、hive安装
    一、linux安装mysql
    三、hadoop、yarn安装配置
    linux下磁盘进行分区、文件系统创建、挂载和卸载
  • 原文地址:https://www.cnblogs.com/chengzixin/p/6749526.html
Copyright © 2011-2022 走看看