2008年9月10日
摘要: 本文介绍了ORACLE执行计划的一些基本概念,供学习应用。 一.相关的概念 Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行修改、插入。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即... 阅读全文
posted @ 2008-09-10 23:24 一江水 阅读(749) 评论(0) 推荐(0) 编辑
摘要: Oracle的hint种类繁多,大致可以分为下面几类: 优化方式和目标:如RULE、CHOOSE、FIRST_ROWS、ALL_ROWS等。 访问路径:如INDEX、FULL、CLUSTER、INDEX_FFS等。 查询转换:如MERGE、USE_CONCAT、NO_EXPAND等。 连接顺序:如LEADING、ORDERED、STAR等。 连接操作:如USE_NL、USE_HASH、USE_MERGE等。 并行执行:如PARALLE、NOPARALLEL、PARALLEL_INDEX等。 其他类型;如APPEND、UNNEST、CACHE等。 阅读全文
posted @ 2008-09-10 23:21 一江水 阅读(6849) 评论(0) 推荐(0) 编辑
摘要: USE_NL(嵌套循环连接) 在嵌套循环连接中,Oracle从第一个行源中读取第一行,然后和第二个行源中的数据进行对比。所有匹配的记录放在结果集中,然后Oracle将读取第一个行源中的下一行。按这种方式直至第一个数据源中的所在行都经过处理。第一个记录源通常称为外部表,或者驱动表,相应的第二个行源称为内部表。使用嵌套循环连接是一种从连接结果中提取第一批记录的最快速的方法。 USE_HASH(哈希连接) 当内存能够提供足够的空间时,哈希(HASH)连接是Oracle优化器通常的选择。在哈希连接中,Oracle访问一张表(通常是较大的表),并在内存中建立一张基于连接键的哈希表。然后它扫描连接中其他的表(通常是较大的表),并根据哈希表检测是否有匹配的记录。 阅读全文
posted @ 2008-09-10 23:01 一江水 阅读(10734) 评论(0) 推荐(2) 编辑
摘要: and_equal,index_join,index_combine这三种都是oracle利用索引关联获得数据的方法,三者的目的都是为了最大限度的利用索引,减少回表的代价.但是三者的实现方法是有区别的 阅读全文
posted @ 2008-09-10 21:23 一江水 阅读(1011) 评论(0) 推荐(0) 编辑
摘要: 在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. ... 阅读全文
posted @ 2008-09-10 16:23 一江水 阅读(1361) 评论(0) 推荐(0) 编辑