网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.教你使用Linux的Shell脚本维护Or.
.Red Hat 7.2/7.3 中文字体设置工.
.在Solaris下安装Oracle9i.
.将Oracle中的数据更改后出错的解.
.业务处理执行语言BPEL简介.
.开启企业殿堂的钥匙 Oracle服务器.
.用JDBC访问一个数据库.
.详细讲解Oracle在Solaris下的性能.
.关于oracle存储过程的若干问题备.
.ORACLE常用傻瓜問題1000問(之六).
.Oracle 数据库操作技巧集.
.临时表空间的使用问题.
.深入了解Oracle 10g新的多重集运.
.Oracle的window服务启动时并不启.
.Siebel帮助Oracle实现客户数据整.
.各个平台上调整最大SGA区的方法.
.使用 SQL Server 时需要经常用到.
.oracle/sql server procedure 导.
.如何在Windows 2000下彻底删除Or.
.Oracle数据库9i DataGuard的安装.

SQL优化思考

发表日期:2008-2-9


初入Oracle殿堂的人,在学写SQL语句时一般会得到一个教诲,那就是exists比in更要高效,但仔细想象要是真的这么简单那干脆去掉in,岂不是省去很多麻烦?       自己对这两种查询语句写法的熟悉也比较浅显,但是觉得还是比较有效,所以有爱好的可以瞄一眼哦......先说IN他相当对inner table执行一个个带有distinct的子查询语句,然后得到的查询结果集再与outer table进行连接,当然连接的方式和索引的使用仍然同于普通的两表连接。select * from T1 where x in (select y from T2);可以转换成如下select * from T1,(select distinct y from T2) T2where T1.x=T2.y;再说exists实际上exists相当于对outer table进行全表扫描,用从中检索到的每一行与inner table做循环匹配输出相应的符合条件的结果,其主要开销是对outer table的全表扫描(full scan),而连接方式是nested loop方式。可以写成select * from T1 where exists (select NULL from T2 where T2.y=T1.x);转换成for cursor1 in (select * from T1)loopif (exists (select NULL from T2 where T2.y=cursor1.x))then     返回匹配的记录;end if;end loop;通过上面的解释,现在很轻易明白当T2数据量巨大且索引情况不好(大量重复值等),则不宜使用产生对T2的distinct检索而导致系统开支巨大的IN操作,反之当T1表数据量巨大(不受索引影响)而T2表数据较少且索引良好则不宜使用引起T1全表扫描的EXISTS操作,
上一篇:Auditing Past Transactions With Oracle LogMiner 人气:723
下一篇:江湖救急:安装oracle9i时候,link pending 走不下去了........ 人气:684
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐