应用游标优化SQL
来源:互联网 发布:武松的战斗力 知乎 编辑:程序博客网 时间:2024/05/20 09:43
问题描述:
公司的一个sql平常都是运行一个小时的,突然有一天3个小时还不能出来,
sql如下:
open cursor for SELECT PROVCODE,
AREACODE,
COUNT(DISTINCT USERNUMBER) MON_USERCOUNT,
SUM(LOGINCOUNT) AS MON_TOTALCOUNT
FROM oss03.OSS_SSOLOGIN_MON_DETAIL A,
(SELECT B.SITE_ID
FROM oss03.OSS_SITES_CLASS_INFO B
WHERE B.SITE_ID <> -1
AND B.TYPE_ID = 1) C
WHERE A.MONTHNO = 201104
AND A.CLIENTIDEXT = C.SITE_ID
AND A.LOGINSERVICEID = 10
GROUP BY A.PROVCODE, A.AREACODE
很多人喜欢在游标后面很长的一个查询
这个sql原来跑2个小时,优化完之后5分钟了
AREACODE,
COUNT(DISTINCT USERNUMBER) MON_USERCOUNT,
SUM(LOGINCOUNT) AS MON_TOTALCOUNT
FROM oss03.OSS_SSOLOGIN_MON_DETAIL A,
(SELECT B.SITE_ID
FROM oss03.OSS_SITES_CLASS_INFO B
WHERE B.SITE_ID <> -1
AND B.TYPE_ID = 1) C
WHERE A.MONTHNO = 201104
AND A.CLIENTIDEXT = C.SITE_ID
AND A.LOGINSERVICEID = 10
GROUP BY A.PROVCODE, A.AREACODE
很多人喜欢在游标后面很长的一个查询
这个sql原来跑2个小时,优化完之后5分钟了
分析:
========
tom说游标性能差,那不是主要的,tom只是说了一方面,没讲另外一方面
tom说游标性能差,那不是主要的,tom只是说了一方面,没讲另外一方面
使用游标两个优点:
1.减少锁得持有时间
2.减少undo的持有时间
1.减少锁得持有时间
2.减少undo的持有时间
对于超过100万的dml,大家需要用游标,游标比sql块主要是快在解析这块
大事物的sql对性能影响非常大,有些人喜欢写300行的sql,或者更多
第一这个sql审核太麻烦
第二个:有隐藏的性能问题
大事物的sql对性能影响非常大,有些人喜欢写300行的sql,或者更多
第一这个sql审核太麻烦
第二个:有隐藏的性能问题
oss03.OSS_SSOLOGIN_MON_DETAIL 这个表有分区,大概分区对应的有5000万数据
另外一个表是500万吧 ,这里由于有group by,distinct这些操作都是在用户的pga里面操作
还有子查询的结果集,hash连接空间 ,都在pga里面
另外一个表是500万吧 ,这里由于有group by,distinct这些操作都是在用户的pga里面操作
还有子查询的结果集,hash连接空间 ,都在pga里面
优化方法:
==========
分析思维: 由于hash 关联和group by 的时候都会占用pga,且sql未执行之前不会释放,导致pga不足,写临时表操作。
优化的方法是: 加一个出口
先用游标定义结果集 ,然后在运算的时候使用一个临时表排出:
先用游标定义结果集 ,然后在运算的时候使用一个临时表排出:
然后对这个临时表再次使用游标:
整个耗时5分钟就可以了,而且后续跑的都是非常稳定
转自:http://blog.csdn.net/huangchao_sky/article/details/8500759 道道老师的博客
- 应用游标优化SQL
- 应用游标优化SQL
- SQL Server游标应用实例
- SQL 游标创建和应用
- Oracle性能优化 之 游标及SQL
- 《基于ORACLE SQL优化》读书笔记-游标
- Oracle性能优化之游标及sql
- Library Cache优化与SQL游标
- 应用系统SQL优化
- 游标应用
- 《基于ORACLE的SQL优化读书》笔记 常规游标共享
- 《基于ORACLE的SQL优化读书》笔记 自适应游标共享
- SQL 游标
- sql游标
- sql游标
- SQL 游标
- sql游标
- SQL -游标
- LCD常用接口原理
- DNS系列一: DNS查询原理
- Samung LCD接口原理
- DNS系列二:搭建DNS服务器
- LCD驱动调试
- 应用游标优化SQL
- oracle 判断字符串是否相等
- 获取对象类型及类型判断的几种方法
- template学习之利用标准函数库写栈
- ognl是个什么东东呢?
- Android TP(一)
- MySQL慢日志分析工具mysqlsla
- Android TP(二)
- 存储过程无法进行单步调试