微课sql优化(4)、帮助“表姐”优化报表
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,1、"表姐"的报表SQL问题今天"表姐"有个比较紧急的工作,有一张历史费用报表下班前必须查询出来,已经倒腾2个小时了,查询并发数已经加到40个,报表还是查询不出来,而且这个报表每月都会折磨表姐, 眼看
千家信息网最后更新 2026年11月02日微课sql优化(4)、帮助“表姐”优化报表
今天"表姐"有个比较紧急的工作,有一张历史费用报表下班前必须查询出来,已经倒腾2个小时了,查询并发数已经加到40个,报表还是查询不出来,而且这个报表每月都会折磨表姐, 眼看就要下班了,时间紧近,紧急求助。 经常被单位各位"表姐"骚扰,而且还特别紧急。。。。DBA的苦,好吧,放下手头工作,先帮"表姐"处理问题。。。。
DBA: 你的SQL发我看看? 表姐 : select /*+ parallel(T 40)*/* FROM ht.ht_tab_fy T WHERE EXISTS (SELECT 1 FROM ht2.ht_DEPT M WHERE T.DEPT_ID = M.DEPT_ID AND M.DEPT_TREE LIKE '%611002%') AND T.DATA_MONTH = '201709' ; DBA : 这个查询结果发我看看? explain plan for select * FROM ht.ht_tab_fy T WHERE EXISTS (SELECT 1 FROM ht2.ht_DEPT M WHERE T.DEPT_ID = M.DEPT_ID AND M.DEPT_TREE LIKE '%611002%') AND T.DATA_MONTH = '201709' ; select * from table(dbms_xplan.display()); 表姐 : ------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 25466 | 3531K| 80186 (2)| | 1 | HASH JOIN RIGHT SEMI| | 25466 | 3531K| 80186 (2)| | 2 | TABLE ACCESS FULL | ht_DEPT | 58 | 2494 | 8 (0)| | 3 | TABLE ACCESS FULL | ht_tab_fy | 118K| 11M| 80176 (2)| ------------------------------------------------------------------------------- DBA : 这两个查询结果给我 select version from v$instance; select name,value from v$parameter where name like '%multiblock%'; SQL> select name,value from v$parameter where name like '%multiblock%'; SQL> select version from v$instance; VERSION ----------------- 10.2.0.5.0 NAME VALUE -------------------------------------------------- -------------------------------------------------- db_file_multiblock_read_count 16
DBA : 从新收集下统计信息: exec dbms_stats.gather_table_stats(ownname=>'ht2',tabname=>'ht_DEPT',estimate_percent=>100,method_opt=>'for all columns size repeat',no_invalidate=>false,degree=>8,cascade=>true); exec dbms_stats.gather_table_stats(ownname=>'ht',tabname=>'ht_tab_fy',estimate_percent=>100,method_opt=>'for all columns size repeat',no_invalidate=>false,degree=>8,cascade=>true); 然后再执行你的语句: alter session set db_file_multiblock_read_count=128; --前面加一条 select * FROM ht.ht_tab_fy T WHERE EXISTS (SELECT 1 FROM ht2.ht_DEPT M WHERE T.DEPT_ID = M.DEPT_ID AND M.DEPT_TREE LIKE '%611002%') AND T.DATA_MONTH = '201709' ;
表姐 : 结果秒出,太感谢了,眼泪哗哗的!!!!
表姐的语句为什么得到了优化?原理是什么?
1、"表姐"的报表SQL问题
今天"表姐"有个比较紧急的工作,有一张历史费用报表下班前必须查询出来,已经倒腾2个小时了,查询并发数已经加到40个,报表还是查询不出来,而且这个报表每月都会折磨表姐, 眼看就要下班了,时间紧近,紧急求助。 经常被单位各位"表姐"骚扰,而且还特别紧急。。。。DBA的苦,好吧,放下手头工作,先帮"表姐"处理问题。。。。
2、问题分析
DBA: 你的SQL发我看看? 表姐 : select /*+ parallel(T 40)*/* FROM ht.ht_tab_fy T WHERE EXISTS (SELECT 1 FROM ht2.ht_DEPT M WHERE T.DEPT_ID = M.DEPT_ID AND M.DEPT_TREE LIKE '%611002%') AND T.DATA_MONTH = '201709' ; DBA : 这个查询结果发我看看? explain plan for select * FROM ht.ht_tab_fy T WHERE EXISTS (SELECT 1 FROM ht2.ht_DEPT M WHERE T.DEPT_ID = M.DEPT_ID AND M.DEPT_TREE LIKE '%611002%') AND T.DATA_MONTH = '201709' ; select * from table(dbms_xplan.display()); 表姐 : ------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 25466 | 3531K| 80186 (2)| | 1 | HASH JOIN RIGHT SEMI| | 25466 | 3531K| 80186 (2)| | 2 | TABLE ACCESS FULL | ht_DEPT | 58 | 2494 | 8 (0)| | 3 | TABLE ACCESS FULL | ht_tab_fy | 118K| 11M| 80176 (2)| ------------------------------------------------------------------------------- DBA : 这两个查询结果给我 select version from v$instance; select name,value from v$parameter where name like '%multiblock%'; SQL> select name,value from v$parameter where name like '%multiblock%'; SQL> select version from v$instance; VERSION ----------------- 10.2.0.5.0 NAME VALUE -------------------------------------------------- -------------------------------------------------- db_file_multiblock_read_count 16
3、 优化方案
DBA : 从新收集下统计信息: exec dbms_stats.gather_table_stats(ownname=>'ht2',tabname=>'ht_DEPT',estimate_percent=>100,method_opt=>'for all columns size repeat',no_invalidate=>false,degree=>8,cascade=>true); exec dbms_stats.gather_table_stats(ownname=>'ht',tabname=>'ht_tab_fy',estimate_percent=>100,method_opt=>'for all columns size repeat',no_invalidate=>false,degree=>8,cascade=>true); 然后再执行你的语句: alter session set db_file_multiblock_read_count=128; --前面加一条 select * FROM ht.ht_tab_fy T WHERE EXISTS (SELECT 1 FROM ht2.ht_DEPT M WHERE T.DEPT_ID = M.DEPT_ID AND M.DEPT_TREE LIKE '%611002%') AND T.DATA_MONTH = '201709' ;
4、优化结果
表姐 : 结果秒出,太感谢了,眼泪哗哗的!!!!
5、现在问题来了?
表姐的语句为什么得到了优化?原理是什么?
表姐
查询
报表
结果
问题
语句
工作
两个
信息
单位
历史
原理
小时
手头
方案
时间
眼泪
费用
还是
加一
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网黑科技
互联网科技工作委员会毛军
国智互联网科技
科技金融是不是互联网金融
互联网扶贫科技
奇酷互联网络科技
天津摩尔互联网科技
伴你行互联网科技有限公司
互联网金融科技委员会
盛创互联网科技有限公司
顺网科技2021年互联网排名
华脉科技工业互联网产品
港股科技和互联网
宝灵互联网科技有限公司
广州新华互联网科技学校电竞方面
烟台灵鸽互联网科技有限公司
雨阳互联网卡科技有限公司
启辰互联网科技
广州百诚互联网科技有限公司官网
科技互联网公司两年变化
科技制造互联网公司
上海致骋互联网科技
唐信互联网科技 大连
新浪科技互联网
长亮科技互联网金融
深圳艾佳互联网科技
武汉健翔互联网络科技有限公司
西安小鹰速贷互联网科技有限公司
米泉互联网科技专业怎么样
互联网科技自媒体灵感