- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0 |
方法二:
先处理一下刚才插入的数据:
SQL> truncate cluster emp_dept_cluster;
truncate cluster emp_dept_cluster
*
第1行出现错误:
ORA-02266:表中的唯一/主键被启用的外键引用
SQL> alter table emp disable constraint emp_fk;
表已更改。
SQL> truncate cluster emp_dept_cluster;
簇已截断。
SQL> alter table emp enable constraint emp_fk;
表已更改。
然后使用以下的方式插入数据:
SQL> begin
2 for x in ( select * from scott.dept )
3 loop
4 insert into dept
5 values ( x.deptno, x.dname, x.loc );
6 insert into emp
7 select emp.*, 'x' 8 from scott.emp 9 where deptno = x.deptno;
10 end loop;
11 end;
12 /
PL/SQL 过程已成功完成。
执行上面统一的SQL。
SQL> select dept_blk, emp_blk, 2 case when dept_blk <> emp_blk then '*' end flag,
3 deptno
4 from (
5 select dbms_rowid.rowid_block_number(dept.rowid) dept_blk, 6 dbms_rowid.rowid_block_number(emp.rowid) emp_blk, 7 dept.deptno 8 from emp, dept 9 where emp.deptno = dept.deptno
10 )
11 order by deptno
12 /
DEPT_BLK EMP_BLK F DEPTNO
---------- ---------- - ----------
85 85 10
85 85 10
85 85 10
85 85 20
85 85 20
85 85 20
85 86 * 20
85 86 * 20
86 86 30
86 86 30
86 86 30
DEPT_BLK EMP_BLK F DEPTNO
---------- ---------- - ----------
86 86 30
86 87 * 30
86 87 * 30
已选择14行。
咱们发现,大部分的数据都在同一个块中。原来这才是想聚簇表里添加数据的最佳方法。
为什么会有这样的差别呢??
当我们通过第一种方法时,有一个问题,由于dept表的行在聚簇中占用空间很小,但是剩余的空间确不能存一条dept的数据(应为我们添加了char(1000)了)。这样就会在那些聚簇 键块上导致过度的串链。Oracle会把包含这些信息的一组块串链或链接起来。如果同时加载对应一个给定聚簇键的所有数据,就能尽可能紧地塞满块,等空间 用完时再开始一个新块。
四:什么时候不应该使用聚簇?
1) 如果预料到聚簇中的表会大量修改:必须知道,索引聚簇会对DML的性能产生某种负面影响(特别是INSERT语句)。管理聚簇中的数据需要做更多的工作。
2) 如果需要对聚簇中的表执行全表扫描:不只是必须对你的表中的数据执行全面扫描,还必须对(可能的)多个表中的数据进行全面扫描。由于需要扫描更多的数据,所以全表扫描耗时更久。
3) 如果你认为需要频繁地TRUNCATE和加载表:聚簇中的表不能截除。这是显然的,因为聚簇在一个块上存储了多个表,必须删除聚簇表中的行。
因此,如果数据主要用于读(这并不表示“从来不写”;聚簇表完全可以修改),而且要通过索引来读(可以是聚簇键索引,也可以是聚簇表上的其他索引),另外会频繁地把这些信息联结在一起,此时聚簇就很适合。
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |