超大表关联的优化方法

本文探讨了在数据量增长后,大表关联效率下降的问题。通过模拟测试,展示了全表扫描和HASH JOIN在处理大量数据时的性能瓶颈。提出通过分区和分表的策略来优化SQL查询,降低PGA和TEMP表空间的使用,从而提高查询效率。通过实例解释了如何应用分区策略,并指出使用PLSQL脚本封装操作可以进一步提升便利性。
摘要由CSDN通过智能技术生成

我们在工作中经常会遇到某些业务表中的数据量随着系统上线运行时间的增加与日俱增,这些表在上线之初数据量不大,各种SQL语句运行速度也是杠杠的。

但随着数据量多了,表之间的关联效率就开始差强人意了。

很多的开发人员,对ORACLE数据库里面CBO优化器的原理不了解,当SQL跑得慢的时候,总是认为是表没有加索引,结果一个表上胡乱的加上了很多索引,查询效率不见得会提高了,反而影响了insert和update语句的速度。


我们今天模拟一下两个大表之间关联的优化,核心思想是分表。


首先建立两张测试表T1和T2,连续插入数据至每张表的体积达到2G。

create table t1 as select * from dba_objects;
insert into t1 select * from t1;
--连续插入多次,直至达到2G。
--下面的语句是查询表大小的
SELECT SEGMENT_NAME,
       SEGMENT_TYPE,
       TABLESPACE_NAME,
       EXTENTS,
       BLOCKS,
       BYTES / 1024 / 1024 / 1024 GB
  FROM DBA_SEGMENTS
 WHERE SEGMENT_NAME = 'T1';
--再将表T1直接复制为T2
create table t2 as select * from t1;


可以看到我们的两张表都达到了2G的大小



评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值