oracle簇表 数据抽取,Oracle的聚簇表

本文介绍了Oracle数据库中的索引聚簇表,包括创建方法、数据加载方式以及适用场景。索引聚簇表适用于数据主要为读取且修改较少的情况,能提升连接查询性能。然而,如果表修改频繁或需要全表扫描,使用索引聚簇表可能会导致性能下降,且不支持TRUNCATE操作。在创建索引聚簇表后,应通过索引进行数据访问。
摘要由CSDN通过智能技术生成

索引聚簇表

create cluster emp_dept_cluster

(deptno number(2)) size 1024;

size 1024 表示每个聚簇键值关联大约1024字节的数据,

oracle会在用这个数据库块上通过size计算最多可以放多少个簇

如果块是8KB,那么这个块上最多放7个聚簇键

向聚簇中放数据之前,需要先对聚簇建立索引.

create index emp_dept_cluster_idx on cluster emp_dept_cluster;

加载的方式应彩用一一对应的关系.加载完主表之后再加载从表

什么情况下不能用索引聚簇表

1)如果预料到聚簇中的表会大量修改,索引聚簇表会对DML的性能产生负面影响.

2)非常不适合对单表的全表扫描,因为只能引起对其它表的全表扫描

3)频繁对表进行TRUNCATE和加载,因为聚簇中的表是不能TRUNCATE的

SQL> truncate table dept;

truncate table dept

*

ERROR at line 1:

ORA-03292: Table to be truncated is part of a cluster

如果数据主要用来读,不怎么修改,并且逻辑上与聚簇连接想适合,最好使用索引聚簇表

oracle数据字典就是这样做的

SQL> set autotrace traceonly statistics

SQL> select a.deptno,b.ename from dept_02 a,emp_02 b where a.deptno=b.deptno and

a.deptno='30';

6 rows selected.

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT Optimizer=CHOOSE

1    0   MERGE JOIN

2    1     INDEX (UNIQUE SCAN) OF 'dddd' (UNIQUE)

3    1     FILTER

4    3       TABLE ACCESS (FULL) OF 'EMP_02'

Statistics

----------------------------------------------------------

0 recursive calls

0 db block gets

5 consistent gets

0 physical reads

0 red

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值