SQL Tuning
文章平均质量分 69
Teresa7
这个作者很懒,什么都没留下…
展开
-
子查询驱动外部查询走NL和Hash的性能比较
总结:在工作中,在t1表的object_id是主键,T1表是50个G,T2表是30M,这个时候用T2表来做驱动表,T1表做被驱动表,走NL是比较理想的执行计划测试:我在这里进行模拟测试的T1有1000000的数据量,大概是120 M,T2表有200000的数据量,大概是23 M,(1)、创建表:exec create_table('t1',1000000);exec原创 2017-01-07 22:51:58 · 847 阅读 · 0 评论 -
删除分区表中重复记录中的异常记录
删除分区表TB_city表中2017-03重复记录中的异常记录TB_city(是按月分区,对每个分区大概6个G,5000万条数据)city mobile plat_flag month_time 济南 13791135001 1 2017-03青岛 13791135001 1原创 2017-05-07 22:45:05 · 433 阅读 · 0 评论 -
left outer join 改写标量子查询
统计每个部门员工总工资。 原SQL:select d.department_id, d.department_name, nvl((select sum(e.salary) from employees e where e.department_id = d.department_id), 0)原创 2017-05-22 14:15:40 · 606 阅读 · 0 评论 -
使用Merge优化改写一个update语句
业务需求需要将错误数据进行整理,主要是针对于length(l.brchno) >= 4这部分数据,以下是一个UPDATE进行更新的操作。源表有28万的数据量,符合条件的有54327条数据。UPDATE执行时间大概是一个半小时,使用Merge进行优化后执行时间是27秒explain plan forupdate sif_member_load l set l.brchno =原创 2017-06-16 14:33:00 · 1661 阅读 · 0 评论 -
列值有NULL值创建索引
如果where条件列查询目标SQL返回数据量比较少时,可以使用创建索引的方式来减少全表扫描的消耗。例子:以ta表为例,在object_id上创建单键值B-Tree索引:创建测试表:create table ta as select * from dba_objects;创建索引:create index idx_object_id on ta( object_id) ;查看执行计划:原创 2017-05-10 16:52:50 · 2773 阅读 · 0 评论 -
一个笛卡尔积的优化
原SQL:业务需求需要开发一张表,但是发现执行很慢,我就看了执行计划,MERGE JOIN CARTESIAN发生笛卡尔积,4dp这张表和6cp这张表发生笛卡尔积,生成的结果集3和8mp又发生一次结果集,也就是说本身没有关系的表发生了笛卡尔积。这里需要声明几点,cp这张表数据将近50万,mp有将近80万的数据,dp也就不到10条数据mt表有150万数据量select原创 2017-05-09 22:46:51 · 4439 阅读 · 0 评论 -
子查询优化
select /*+ qb_name(outer) leading(b@inner) use_nl(a@outer)*/ * from emp a where deptno in (select /*+ qb_name(innner) */ deptno from dept b where dname='ACCO原创 2017-01-14 23:03:08 · 480 阅读 · 0 评论 -
delete 的优化
drop table a;drop table b;create table a(city varchar2(20),tel_num number,plags number);insert into a values('济南','13791135771','1');insert into a values('聊城','13791135771','1');insert into a val原创 2017-01-14 22:53:25 · 761 阅读 · 0 评论 -
报表优化-------根据IP地址对比起始IP和结束IP找到相应的地域(判断两个IP地址)
这个报表很慢,通过测试发现慢的原因是在关联IP地址库上表较慢,这里需要通过给定的IP地址,对比IP地址起始IP和结束IP范围找到所在区域。通过自定义函数直接去关联或者是通过拆分对每个值去关联,这两张方式都是十几分钟,如果查询的数据量大的话直接宕机。但是不关联IP地址库的话5秒就出结果。我最终返回的数据有将近30万的数据,IP地址库有60多万数据。最终通过两种方式处理,方式一:32秒就出数据原创 2017-06-26 21:18:23 · 1507 阅读 · 3 评论