文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发OracleOracle巧取指定记录以及巧用外关联查询
精品推荐
特别推荐
·常用数据库比较
·ODBC API常用函数诠释
·提高ORACLE数据库的查询统计速度
·细化解析:Oracle使用的hints调整机制
·解析Oracle/Oracle Forms 的多用途代码
·从Oracle的FORM中调用REPORT的实用技巧
·Oracle SQL精妙SQL语句讲解
·ORACLE学习笔记--性能优化四
·ORACLE常用傻瓜问题1000问
·ORACLE常见错误代码的分析与解决之二
·深刻理解Oracle数据库的启动和关闭
·监控Oracle数据库的常用shell脚本
·Oracle在Solaris下的性能与调整简介
·通俗解说ORACLE
·数据库安全性策略
热点TOP10
·详细介绍ORACLE sqlplus命令
·ORACLE常用傻瓜问题1000问
·我的oracle笔记四(DBA管理)
·Oracle SQL精妙SQL语句讲解
·Oracle Tuning (Oracle 性能调整)的一些总结
·我的oracle笔记一(sql语句方面)
·程序员如何掌握计算机英语
·用正则表达式函数验证身份证号码合法性
·oracle数据库 exp/imp命令详解
·性能分析工具的使用
·ORACLE UPDATE 语句语法与性能分析看法
·在Solaris 10 X86上安装Oracle 10g RAC详解 (1)
·ORA-01092: ORACLE 例程终止。强行断开连接
·VMware下RedHat安装Oracle 9i RAC全攻略
·监控Oracle数据库的常用shell脚本
·手工创建oracle数据库
·常用数据库比较
·PL/Sql循序渐进全面学习教程
·在Solaris 10 X86上安装Oracle 10g RAC详解 (2)
·ORACLE学习笔记--性能优化一

Oracle巧取指定记录以及巧用外关联查询

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]


本文中利用例子的形式来解决Oracle巧取指定记录与巧用外关联查询问题。

如何取得表中第6到第10条记录的值

第一种方法,使用minus语句:

假设ddl语句如下:

CREATE TABLE T(ID VARCHAR2(4) PRIMARY KEY, VALUE INT)

那么第一种方法就是取出前5条,再取出前10条,然后采用集合运算的方法把前10条减去前5条就OK了,SQL语句如下:

SELECT * FROM T WHERE ROWNUM <= 10
MINUS
SELECT * FROM T WHERE ROWNUM <= 5;

另外一种方法,采用子查询:

子查询的这种方法相对比较复杂一点,不过性能要比刚才的集合相减要好一些。这种方法首先在子查询中得到前10条数据,顺路也取得前10条数据的rownum,然后再一次查询的时候取得刚才查询的rownum大于5的那些数据。SQL语句如下:

SELECT ID, VALUE FROM 
(SELECT ID, VALUE, ROWNUM R FROM T WHERE R <= 10)
WHERE
R > 5;

通过上面的语句,就得到了6到第10条数据了。

利用外连接替代not in语句

in语句还有not in语句的效率是非常的差的,因为数据库在遇到这两种语句的时候是要把数据进行一条一条的比对,如果in或者not in两侧的数据量在上万条的时候,进行比对的次数就是上亿次,很可能一个简单的sql语句就要执行半个小时以上。这种效率客户是肯定不能够接受的。那我们可以考虑两种方法进行替代,第一种就是采用exist语句和not exist语句,这种大家应该比较熟悉了。另外一种就是巧用外关联语句,这种方法可能大家不是很熟悉,我来稍微说一下。假设数据表的建表DDL语句为

CREATE TABLE T1(ID VARCHAR2(4) PRIMARY KEY, VALUE INT)

而in或者not in的表的建表DDL语句为:

CREATE TABLE T2(VALUE INT)

Oracle中外关联采用的是(+)符号表示外关联,也就是说标识了(+)符号的部分在找不到对应的值的时候为NULL。下面是替代in语句的时候的SQL语句

SELECT T1.ID, T1.VALUE 
FROM T1, T2 
WHERE T1.VALUE = T2.VALUE(+) 
AND T2.VALUE IS NOT NULL;

而类似的。替代not in语句的时候的SQL语句则为:

SELECT T1.ID, T1.VALUE 
FROM T1, T2 
WHERE T1.VALUE = T2.VALUE(+) 
AND T2.VALUE IS NULL;

大家可以试验一下,在数据量多的时候,采用外关联比用in或者not in的执行效率要高很多很多。

(出处:清风网络学院






上一篇:如何将Oracle的数据倒入EXCEL中的方法?

下一篇:如何使用制表控制器简化Access对表操作

Oracle巧取指定记录以及巧用外关联查询 相关文章:
·离线查看QQ聊天记录有新招
·详细介绍ORACLE sqlplus命令
·ORACLE常用傻瓜问题1000问
·让指定QQ号码无法登陆的技巧
·Windows无法访问指定设备,路径或文件.您可能没有合适的权限访问这个项目
·魔兽世界:战士的天赋加点,以及PK
·我的oracle笔记四(DBA管理)
·如何让Yahoo的邮箱支持POP3以及SMTP收发!!
·Oracle SQL精妙SQL语句讲解
·Oracle Tuning (Oracle 性能调整)的一些总结
Oracle巧取指定记录以及巧用外关联查询 相关软件:
·查看QQ聊天记录V3.0 Build 20071108
·解放战争全记录
·QQ聊天记录查看器绿色特别版 V5.3
·Oracle v8.1.7
·全能鼠标键盘记录器 V2.81
·海关进口关税税率查询系统V1.0
·ORACLE内部培训视频教学 RM 22讲
·QQ聊天记录者2008 v1.2
·Oracle官方文档CHM合集-Oracle10g错误代码
·oracle9

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot