`
wangyanlong0107
  • 浏览: 486269 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

ORACLE分页SQL语句

 
阅读更多

一个非常好的ORACLE的分页SQL语句 

select * from (select my_table.*, rownum as my_rownum from ( select yhbh, yhmc from yysf_tb_yonghxx order by yhbh) my_table where rownum <20 ) where my_rownum>=10

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

其它几种分页实现:

1.根据ROWID来分
select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from

t_xiaoxi  order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
执行时间0.03秒
2.按分析函数来分
select * from (select t.*,row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980;
执行时间1.01秒
3.按ROWNUM来分
select * from(select t.*,rownum rn from(select * from t_xiaoxi order by cid desc) t where rownum<10000) where

rn>9980;执行时间0.1秒
其中t_xiaoxi为表名称,cid为表的关键字段,取按CID降序排序后的第9981-9999条记录,t_xiaoxi表有70000多条记录
个人感觉1的效率最好,3次之,2最差

 oracle如何返回指定行数之间的查询结果

如何返回指定行数之间的查询结果,以实现web记录分页,在Oracle中有许多的方法,这里仅仅列出了4种,希望能对大家有所帮助,大家可以根据不同需要选择下面的script 
  
  1)select ... where rownum < 50 minus select ... where rownum < 30  
    这个方法因为用到了minus操作符,所以速度会受影响。  
  2) 
  SELECT results.* FROM  
  ( SELECT t2.*, rownum rownumber FROM  
  ( SELECT t.* FROM mv_table t WHERE ORDER BY col1) t2) results  
  WHERE results.rownumber BETWEEN 30 and 50 ORDER BY col1 
  这个方法是从一个论坛上看到的,没有亲自测试过  
  3) 
  定义cursor x, 2.fetch x a,b,c; loop ...... end loop;  
  其中用两个循环变量和一个FLAG变量,分别表示,当前的记录数,属于第几页的, 及第一页面。  
  ps;  
  j:=to_number(kafyf);  
  i:=1;  
  open cx;  
  loop fetch cx into col1,col2,col3,col4,col5,col6;  
  if cx%NOTFOUND then exit; end if;  
    if i>=j then  
  htp.tableRowOpen;  
  htp.tableData(col1);  
  htp.tableData(col2);  
  htp.tableData(col4);  
  htp.tableData(col5);  
  htp.tableData(col6);  
  htp.tableData(col3);  
  htp.tableRowClose;  
  i:=i+1;  
  if i=j+10 then l:=1; exit; end if;  
  else i:=i+1;  
  end if;  
  end loop;  
  close x;  
  该方法是名叫‘淼’的网友写的script,他用到了Oracle web2kit中的OWA_UTIL package。 
  
  4)How can one page forward and backwards through a table? 
  Externalize ROWNUM by implementing queries like this:  
  
  SELECT ...  
  FROM (SELECT ROWNUM rnum, ... FROM ...)  
  WHERE rnum BETWEEN :low AND :high AND rownum <(:high :low + 1);  
    where :low and :high are dynamically generated values depending on which result page the user 
  is viewing. Typically, they are used to show "Next 15 matches", "Previous 15 matches" links at the 
  bottom of each page.  

分享到:
评论

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    数据库分页SQL语句实现

    3大数据库(Sql-Server,MySql和Oracle)的分页SQL语句实现

    几条常见的数据库分页SQL 语句

    几条常见的数据库分页SQL 语句,针对oracle,sqlserver,mysql三种常见数据库的分页显示。

    oracle分页查询sql

    oracle分页查询语句sql

    用ORACLE的SQL语句实现多栏分页输出

    用ORACLE的SQL语句实现多栏分页输出.RTF

    数据库真分页SQL语句

    例如,在SQL Server中,获取第10页,每页显示10条记录的真分页SQL语句可能如下: ```sql SELECT * FROM ( SELECT *, ROW_NUMBER() OVER(ORDER BY SomeColumn) AS RowNum FROM YourTable ) AS TmpTable WHERE...

    oracle sql分页语句

    NULL 博文链接:https://yan578351314.iteye.com/blog/911307

    jdbc 分页 sql语句

    sql语句分页查询 自己总结下来的 希望能给大家一点帮助!

    分页SQL语句

    SQL Server 、MySQL 、Oracle数据库分页SQL语句

    Oracle的sql语句练习题及参考答案

    在“Oracle的SQL语句练习题及参考答案”中,我们很可能会遇到各种与`SELECT`语句相关的练习,这是SQL中最基础且最重要的部分。 `SELECT`语句用于从数据库中检索数据,其基本语法结构如下: ```sql SELECT column1,...

    SQL Server 存储过程及Oracle SQL语句分页

    而Oracle的分页SQL语句更为简洁,适合在不支持存储过程或者简单场景下使用。但需要注意的是,Oracle的`ROWNUM`方式在处理有序数据时可能会有性能问题,因为`WHERE ROWNUM`条件可能无法充分利用索引。 在实际应用中...

    oracle经典sql语句练习题和答案

    Oracle SQL是数据库管理和数据查询的重要工具,特别是在Oracle数据库系统中,掌握高效的SQL语句编写技巧至关重要。本资源“oracle经典sql语句练习题和答案”提供了在scott用户下的两个典型表格——emp(员工表)和...

    oracle的 分页sql语句

    讲解oracle数据库操作数据表的分页过程,简单明了,可以直接套用,希望对大家学习oracle会有帮助

    Oracle数据库SQL语句的性能优化.pdf

    总结,Oracle数据库SQL语句的性能优化是一个涉及多方面知识的综合过程,包括索引策略、查询优化器使用、子查询与连接优化、分页查询、存储过程设计、资源管理、SQL语句重构以及利用各种内置工具进行监控和调优。...

    Oracle的分页查询语句 Oracle分页的存储过程

    本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询语句通常遵循一个标准格式,如下所示: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ...

    使用简单的SQL语句实现的Oracle数据库分页技术

    环境: Oracle 9i 本例子使用简单的SQL语句实现Oracle数据库的分页动作。它没有使用PL/SQL语句(比如什么程序包、游标等),只是使用通用的、简单的SQL实现了...分页公式注释非常详细,是非常实用的Oracle分页语句!!

    用ORACLE的SQL语句实现多栏分页输出.pdf

    用ORACLE的SQL语句实现多栏分页输出.pdf

    oracle-jdbc分页实现(只需传入sql语句即可实现分页)

    该示例可能是通过传递SQL语句,结合Java代码处理ROWNUM或者使用其他高级分页方法来实现分页功能。记得在使用时注意SQL注入的安全问题,考虑性能优化,如使用绑定变量,避免全表扫描等。 总之,Oracle JDBC分页实现...

    用SQL语句实现分页(Oracle版Sql Server版)

    用SQL语句实现分页(Oracle版Sql Server版)

    如何解决Oracle分页查询中排序与效率问题

    这是因为 Oracle 在执行 ORDER BY 操作时,会先执行 ORDER BY 语句,然后再进行分页处理。 知识点 3: 解决排序问题的方法 方法一:使用子查询 可以使用子查询来解决排序问题。首先,执行一个子查询来获取所有记录...

Global site tag (gtag.js) - Google Analytics