![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
oracle
00M
keep alive
展开
-
Oracle执行计划详解
Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容。 并有总结和概述,便于理解与记忆! +++转载 2014-03-20 22:09:15 · 793 阅读 · 0 评论 -
哈希连接(hash join) 原理
访问次数:驱动表和被驱动表都只会访问0次或1次。 驱动表是否有顺序:有。 是否要排序:否。 应用场景: 1. 一个大表,一个小表的关联; 2. 表上没有索引; 3. 返回结果集比较大。 原理我们说的简单一点,先把驱动表的关联字段hash到PGA中(当然rowid也在PGA中),然后扫描被驱动表,取第一条数据,将关联的字段hash 一下探测PGA中的小表,如果匹配则关联,再取第二转载 2015-03-04 21:49:53 · 4623 阅读 · 0 评论 -
嵌套循环连接(nested loops join)原理
访问次数:驱动表返回几条,被驱动表访问多少次。 驱动表是否有顺序:有。 是否要排序:否。 应用场景: 1.关联中有一个表比较小; 2.被关联表的关联字段上有索引; 3.索引的键值不应该重复率很高。 如果你做过开发,就把它看成两层嵌套的for循环。 下面我们来做个实验: SQL> create table test1 as select * from dba_objects转载 2015-03-04 21:48:34 · 900 阅读 · 0 评论 -
Oracle的Filter,Nest loop,Merge sort join和Hash join
转自:http://czmmiao.iteye.com/blog/1807571 Merge Sort Join 按照Merge Sort Join连接的两表地位完全相同。这种算法会把每个表按照连接列进行排序,生成两个排序集。然后对两个排序集进行一次遍历便可以得到最终结果集。这个算法的特点是,每个表都需要排序,排序后都需要遍历一次。 以下面的例子说明,Merge Sort Joi转载 2015-03-05 21:52:16 · 751 阅读 · 1 评论 -
Oracle索引块分裂split信息汇总
转自:http://www.oracledatabase12g.com/archives/index-split.html 索引块分裂概念介绍 索引中的数据块 按照其作用分为:root block 根块、branch block 枝块、leaf block 叶块。 root block根块: 根块是索引的入口对于一个索转载 2015-03-07 22:18:00 · 1585 阅读 · 0 评论 -
如何通过跟踪一个客户端程序发出的sql的方法来优化SQL
概括介绍,跟踪一个客户程序发出的SQL主要分成下面几步: 1. 识别要跟踪的客户端程序到数据库的连接(后面都用session代替),主要找出能唯一识别一个session的sid与serial#。 2. 设定相应的参数,如打开时间开关(可以知道一个sql执行了多长时间),存放跟踪数据的文件的位置、最大值。 3. 启动跟踪功能。 4. 让系统运行一段时间,以便可以收集到跟踪数据转载 2015-03-07 22:12:58 · 1909 阅读 · 0 评论 -
排序合并连接(sort merge join)的原理
访问次数:两张表都只会访问0次或1次。 驱动表是否有顺序:无。 是否要排序:是。 应用场景:当结果集已经排过序。 排序合并连接原理:如果A表的数据为(2,1,4,5,2),B表的数据为(2,2,1,3,1) ,首先将A表和B表全扫描后排序,如下: A B 1 1 2 1 2 2 4 2 5 3 因为没有驱动表,所以oracle会随机选择一张转载 2015-03-04 21:42:58 · 1957 阅读 · 0 评论