网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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教程,数据库安全,数据库文摘
本月文章推荐
.解析MobiLink实现基于时间戳的分.
.Installing Oracle 10G on SuSE .
.SERVER数据转换ORACLE问题.
.ORACLE 9I 重建 TEMP 表空间.
.Oracle数据库的备份与恢复.
.Linux_FAQ之六:疑难杂症.
.一个容易忽视的Oracle数据安全问.
.Oracle复合数据类型(2).
.Oracle数据库系统性能优化策略.
.Oracle数据库缓冲区忙等待的原因.
.Linux 硬件稳定性指南,第 2 部分.
.Oracle数据库技术(1).
.oracle热物理备份步骤.
.Oracle 10g 新特性之虚拟专用数据.
.Oracle数据库9i特性:iSQLPLUS(组.
.如何给Linux补洞.
.postfix出现错误“fatal: open d.
.Oracle与PHP实例开发Myers订单跟.
.FetchingAcrossCommits:WhereIst.
.Oracle性能调优实践中的几点心得.

关于三种JOIN的理解

发表日期:2008-2-9



  Nested loop join:
  
  步骤:确定一个驱动表(outer table),另一个表为inner table,驱动表中的每一行与inner表中的相应记录JOIN。类似一个嵌套的循环。适用于驱动表的记录集比较小(<10000)而且inner表需要有有效的访问方法(Index)。 需要注重的是:JOIN的顺序很重要,驱动表的记录集一定要小,返回结果集的响应时间是最快的。
  
  cost = outer Access cost + (inner access cost * outer cardinality)
  
    2   NESTED LOOPS                  3   141    7 (15)
    3   TABLE ACCESS FULL      EMPLOYEES     3   60    4 (25)
    4   TABLE ACCESS BY INDEX ROWID JOBS       19   513    2 (50)
    5    INDEX UNIQUE SCAN     JOB_ID_PK     1           
  
  EMPLOYEES为outer table, JOBS为inner table.
  
  Hash join
  
  步骤:将两个表中较小的一个在内存中构造一个HASH表(对JOIN KEY),扫描另一个表,同样对JOIN KEY进行HASH后探测是否可以JOIN。适用于记录集比较大的情况。需要注重的是:假如HASH表太大,无法一次构造在内存中,则分成若干个partition,写入磁盘的temporary segment,则会多一个写的代价,会降低效率。
  
  cost = (outer access cost * # of hash partitions) + inner access cost
  --------------------------------------------------------------------------
   Id  Operation       Name     Rows  Bytes Cost (%CPU)
  --------------------------------------------------------------------------
    0 SELECT STATEMENT            665 13300    8 (25)
    1  HASH JOIN               665 13300    8 (25)
    2   TABLE ACCESS FULL  ORDERS      105   840    4 (25)
    3   TABLE ACCESS FULL  ORDER_ITEMS   665  7980    4 (25)
  --------------------------------------------------------------------------
  
  ORDERS为HASH TABLE,ORDER_ITEMS扫描
  
  Sort merge join
  
  步骤:将两个表排序,然后将两个表合并。通常情况下,只有在以下情况发生时,才会使用此种JOIN方式:
  
  1.RBO模式
  
  2.不等价关联(>,<,>=,<=,<>)
  
  3.HASH_JOIN_ENABLED=false
  
  4.数据源已排序
  
  cost = (outer access cost * # of hash partitions) + inner access cost
上一篇:Oracle数据库-关于外联接 人气:788
下一篇:一条SQL语句的优化过程 人气:832
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐