Oracle 的链接方式
来源:互联网 发布:php baseurl 编辑:程序博客网 时间:2024/05/16 12:42
一、 嵌套循环连接(Nested Loop)
其主要是选择出一张表作为外表,然后循环外表,并且每一个外表中的记录又在内表中作循环。
嵌套循环连接的工作方式是这样的:
1、 Oracle首先选择一张表作为连接的驱动表,这张表也称为外部表(Outer Table)。由驱动表进行驱动连接的表或数据源称为内部表(Inner Table)。
2、 提取驱动表中符合条件的记录,与被驱动表的连接列进行关联查询符合条件的记录。在这个过程中,Oracle首先提取驱动表中符合条件的第一条记录,再与内部表的连接列进行关联查询相应的记录行。在关联查询的过程中,Oracle会持续提取驱动表中其他符合条件的记录与内部表关联查询。这两个过程是并行进行的,因此嵌套循环连接返回前几条记录的速度是非常快的。在这里需要说明的是,由于Oracle最小的IO单位为单个数据块,因此在这个过程中Oracle会首先提取驱动表中符合条件的单个数据块中的所有行,再与内部表进行关联连接查询的,然后提取下一个数据块中的记录持续地循环连接下去。当然,如果单行记录跨越多个数据块的话,就是一次单条记录进行关联查询的。
二、 排序合并连接(Sort Merge)
其主要是连接的表排序,然后根据排序结果进行连接。
排序合并连接的方法非常简单。在排序合并连接中是没有驱动表的概念的,两个互相连接的表按连接列的值先排序,排序完后形成的结果集再互相进行合并连接提取符合条件的记录。相比嵌套循环连接,排序合并连接比较适用于返回大数据量的结果。
三、 哈希连接(Hash join)
其主要是两张表都先根据条件进行选择,然后,选择出一张表作为外表,然后再另一张表已经查询结束的结果集中进行检索。
哈希连接分为两个阶段,如下。
1、 构建阶段:优化器首先选择一张小表做为驱动表,运用哈希函数对连接列进行计算产生一张哈希表。通常这个步骤是在内存(hash_area_size)里面进行的,因此运算很快。
2、 探测阶段:优化器对被驱动表的连接列运用同样的哈希函数计算得到的结果与前面形成的哈希表进行探测返回符合条件的记录。这个阶段中如果被驱动表的连接列的值没有与驱动表连接列的值相等的话,那么这些记录将会被丢弃而不进行探测。
四、 Filter
Filter 的工作方式是,先全表扫描两张表,然后做笛卡尔积,之后再进行查询。
- Oracle 的链接方式
- oracle修改链接字符集的方式
- oracle的执行计划中表的链接方式介绍
- sqlplus访问oracle数据库 带实例名的链接方式
- DLL的链接方式
- 天气预报的链接方式
- 分解链接的方式:
- 库的链接方式
- 程序的链接方式
- oracle 9i下载 方式和链接
- oracle的左右链接
- 关于oracle的链接
- 通过链接方式导出、导入oracle某用户下的所有表数据
- 常用的数据库链接方式
- 链接的2种方式
- yii 用到的链接方式
- 存储器--程序的链接方式
- Mysql数据库的链接方式
- Global 事件
- HTML中小meta的大作用
- 相似性计算
- 怎么样才算是一个卓有成效的程序员
- sql日志
- Oracle 的链接方式
- Win2008 IIS7去除30M上传限制的解决方法
- Windows映射模式及相关问题的解决
- vss中如何从其他目录将文件拷至项目目录下
- STUN在SIP中的工作原理及过程
- sudo: sorry, you must have a tty to run sudo
- 什么是增益
- 为ASPxComboBox 控件动静态绑定下拉项的方法
- 《穷爸爸、富爸爸》读后感