oracle 三种表连接方式

oracle 小知识 
1.oracle 查看表大小 
SELECT SUM(T.BYTES) / 1024 / 1024 / 1024 
  FROM DBA_SEGMENTS T 
WHERE T.SEGMENT_NAME = 'TT_TSFR_FUZZY_ABNORMAL'; 

2.强制走全表扫描和索引
/*+ FULL(TT_CONVEYANCE_DETAIL_UNLOAD)*/ 强制走全表扫描
/*+ INDEX(t,IDX_BATCHCODE_LOCAL)*/  强制走索引 
3.oracle 并行 
/*+ PARALLEL(R 3) */

4.oracle 三种表连接方式

排序合并连接 USE_MERGE  

应用场景:当结果集已经排过序

select /*+ ordered use_merge(t2)*/count(*)

from test1 t1, test2 t2

where t1.object_id = t2.object_id;

嵌套循环 USE_NL

应用场景:

1.关联中有一个表比较小;

2.被关联表的关联字段上有索引;

select /*+leading(t1) use_nl(t2)*/count(*)

from test1 t1, test2 t2

where t1.object_id = t2.object_id;

t1位驱动表,数据量小 

哈希连接USE_HASH

应用场景:

1.一个大表,一个小表的关联;

2. 表上没有索引;
3. 返回结果集比较大。
select /*+leading(t1) use_hash(t2)*/count(*)
from test1 t1, test2 t2
where t1.object_id = t2.object_id;
select /*+leading(t1) use_hash(t2)*/count(*) from test1 t1, test2 t2 where t1.object_id = t2.object_id;

t1为驱动表,数据量小 

Oracle 索引分类

按存储方法分类

B-树索引

这种索引的叶子节点保存索引键值和指向索引行的ROWID

B-树索引可以用unique限定为唯一索引

create unique index student_idx on student(number) tablespace users;

 

位图索引

与B-树索引不同,位图索引不存储ROWID值,也不存储键值。它是一个索引键条目存储指向多行的指针,即每个索引条目指向多行。

位图索引适合索引基值数少,高度重复,且只读的应用环境使用,所以适合于数据仓库等环境。

create bitmap index student_bitmap_idx on student (s_sex) tablespace users;

 

按功能分类

唯一索引

 一般索引

猜你喜欢

转载自taiwei-peng.iteye.com/blog/2289752