`
lg_asus
  • 浏览: 190786 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

oracle递归查询和分页查询

 
阅读更多
================以下引自 http://www.cnblogs.com/hxw/archive/2005/09/11/234619.html=================================
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最差
===============引用结束=================================
其中第3种方法之所以慢,是select * 引起的,最内层循环必须要select * 才能保证取得所有的列,外层循环的select *都依赖于它,因此没有办法优化,第一种写法和第三种很像,只是在分页的时候只select rid,只是在最后select的时候才取所有字段,效率比较高。 如果最外层用连接而不是in,效率应该还可以提高点。

==================递归查询===============================
一个部门结构,id表示员工号,parentId为上司工号,name为姓名(见图片)。 现在要求根据一个员工的姓名(唯一)来查询他的最高上司信息(最高上司没有parentId),因此可以用
   select m.*
        from
        (select t.id, t.parentid,t.name from xfyq_1.t_recurse t
          start with t.name = '王三'
           connect by prior t.parentid = t.id) m
         where m.parentid is null

其中start with ... connect by prior 是递归查询, prior的一端表示上一条记录,上面语句表示把“王三”这个根结点, prior t.parentId = t.id 表示取id为上一条记录的parentId,这里的上一条记录就是当前的“王三”这条记录,依次类推。
  • 大小: 22.4 KB
分享到:
评论

相关推荐

    oracle语法.rar

    这个“oracle语法.rar”压缩包包含了关于Oracle数据库的一些关键知识点,如递归查询、内置函数、PL/SQL编程以及分页建表等。下面将详细介绍这些内容。 1. **递归查询**:在Oracle中,递归查询通常用于处理层次结构...

    数据库分页优化技术分析与实现

    同时,通过观察Oracle统计信息中的相关指标,如递归调用次数(dbblockgets)、一致性读取次数(consistent gets)等,可以分析出分页查询方法的优化效果。 此外,文章中还提到了在数据库设计时,合理的表结构和索引设计...

    Oracle迁移到PG建议.docx

    * 分页查询:在Oracle中,使用ROWNUM来实现分页查询,而在Postgresql中,使用LIMIT和OFFSET来实现分页查询。 * 当前日期:在Oracle中,SYSDATE是当前日期,而在Postgresql中,可以使用CURRENT_TIMESTAMP或CURRENT_...

    oracle常用函数.rar

    Oracle常用的分页方法有ROWNUM和ROW_NUMBER()结合子查询,或者使用Oracle的高级分页功能如`OFFSET-FETCH`或`FETCH FIRST`。例如: ```sql SELECT * FROM (SELECT column_list, ROWNUM AS rn FROM (SELECT column_...

    超详细的oracle教程

    “查询基础”章节深入浅出地讲解了如何使用SQL进行数据检索,包括SELECT语句的构造,WHERE子句用于筛选记录,ORDER BY用于排序结果,以及LIMIT和OFFSET用于分页查询。这些基本查询技能是数据库操作的核心。 “单行...

    SSH2利用SQL连接oracle示例

    页码操作可能指的是分页查询,即限制返回结果的数量,以提高性能和用户体验。 7. **源码修改**:原文提到原始的源码可能无法直接运行,但已经进行了修改以适应运行。这意味着你可能需要根据自己的环境(如数据库...

    oracle函数详解[收集].pdf

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的SQL函数和操作符来支持复杂的数据操作和查询。本篇文章将深入解析Oracle中的SQL语句基础和一些关键函数。 1. SQL语句基础 SQL(Structured Query ...

    oracle详细教材

    高级查询涉及更复杂的数据处理技术,如集合操作(UNION、INTERSECT、EXCEPT)、窗口函数、递归查询等。本章将深入探讨这些高级查询技巧。 **第九章 数据字典** Oracle的数据字典是系统维护的一系列视图,用于存储...

    Oracle 数据库的常用函数列表一览

    在Oracle中,函数被用于处理和操作数据,提供了一系列工具,使得数据查询、计算和转换变得更为便捷。以下是一些Oracle数据库中的常用函数,它们在日常的数据管理和分析工作中扮演着重要角色。 1. **字符串函数**: ...

    kettle另一种简单的循环方式

    为了实现分页,我们可以使用Oracle的`ROWNUM`伪列或`FETCH FIRST n ROWS ONLY`语法,限制每次查询返回的行数。这可以通过设置SQL查询中的WHERE子句来实现。 2. **循环控制**:Kettle的"Row denormalizer"或"Java ...

    PostgreSQL 8.2,Oracle 10g,SQL Server 2005,MYSQL 5.1 脚本规范

    - 版本8.2在2007年发布,引入了如表分区、递归查询、窗口函数等新特性。 - 脚本规范包括SQL语句的格式化、注释的使用、错误处理机制以及事务管理等。 - 使用PL/pgSQL作为过程编程语言,需要注意语法和异常处理。 ...

    递归显示数据库目录树(html+java servlet)

    在IT领域,数据库目录树的递归展示是一项常见的任务,特别是在构建Web...总的来说,这个主题涵盖了Web开发中的前后端交互、数据库操作和递归算法等多个关键知识点,对于理解和实践Web应用程序的开发有着重要的意义。

    Sql常见面试题(总结)

    - 使用其他方法实现分页查询,如 OFFSET 和 FETCH NEXT 子句。 #### 三、查询高于部门平均薪资的员工 **题目背景:** 查询薪水高于其所在部门平均薪资的所有员工。 **示例代码:** ```sql -- 示例1:直接使用子...

    OracleFenYe.rar_Oracle数据库_SQL_

    例如,我们可能有大区、小区和微区的概念,每层分页递归地获取更小范围的数据。 在`OracleFenYe.sql`文件中,可能包含的SQL语句会是这样的: 1. **第一次分页**:获取大区数据,比如前100条记录。 ```sql SELECT *...

    SQL+API+中文版

    2. **SQL查询**:熟练掌握SELECT语句,包括单表查询、联接查询(JOIN)、子查询、分组(GROUP BY)和聚合函数(SUM、AVG、COUNT等)、排序(ORDER BY)以及分页(LIMIT或OFFSET)。 3. **SQL高级特性**:学习窗口...

    数据库-表-树节点读取.rar

    为了有效地存储和查询这种数据,数据库通常会采用特定的数据模型和索引策略。 1. **自连接表**:在数据库中表示树结构的一种常见方法是使用自连接表。这意味着表中存在一个字段,该字段引用同一表中的其他行,形成...

    SQL语言参考大全.rar

    2. **查询语句(SELECT)**:这是SQL中最常用的部分,讲解了如何使用SELECT语句来查询数据库中的数据,包括基本查询、联接查询、子查询、分组与聚合函数(如COUNT、SUM、AVG、MAX、MIN)以及排序和分页等。...

Global site tag (gtag.js) - Google Analytics