微课sql优化(4)、帮助“表姐”优化报表
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,1、"表姐"的报表SQL问题今天"表姐"有个比较紧急的工作,有一张历史费用报表下班前必须查询出来,已经倒腾2个小时了,查询并发数已经加到40个,报表还是查询不出来,而且这个报表每月都会折磨表姐, 眼看
千家信息网最后更新 2025年11月09日微课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安全错误
数据库的锁怎样保障安全
网络安全认证体系
山东互联网科技有限公司
上海交通大学网络技术学院
中国网络安全与应急部
软件开发单据和材料
西安云鸟互联网科技有限公司好吗
天津电商软件开发哪家好
北辰区网络技术证书
浙江洛菲斯网络技术有限公司
微软服务器怎么重装
河北省专业技术网络安全试题
服务器怎么打开光驱
淮北矿业集团网络安全培训
传奇数据库安装不了
护苗网络安全课体会200字
烽火服务器 管理口登录
江苏科技大学网络安全大赛
猎人919人软件开发
数据库的问题
松江区高科技软件开发使用方法
数据库数据源哪个是文本文件
3d游戏软件开发都有什么软件
国庆70周年网络安全讲话
tgp服务器klei
云服务器被攻击能报警
服务器日志文件维护
数据库运维内容
怎样查询数据库表的大小
计算机网络技术学些什么东西
钦爷网络技术