Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

11

积分

0

好友

14

主题
1#
发表于 2012-12-10 23:21:39 | 查看: 3720| 回复: 2
本帖最后由 wengtf 于 2012-12-10 23:47 编辑

附件中sql 个人觉得非常奇怪。
以下是个人的想法,请刘大指正:
1、该sql 的执行计划第46行, MICS_ENR_GRP_MEM_MAP 表执行全表扫描,表的 POL_INSURED_GRP_SEQ_ID列是有索引的,该表大概20万条数据

2、Statistics 统计中 存在大量的consistent gets ,这是很不正常的,究其原因,在该sql语句执行钱,该语句中的各表存在其他事务(会话)对这几个表存在大量的操作(dml操作),由于oracle 为了保证事务的一致性, 执行计划在评估前,会从undo buffer 的内存中读取。为什么会造成如此多得一致性读,不解!

3、执行计划的后,都是filter 后再 去access,这是否会使access 次数成次幂增长?

是否可以将如下代码:

  1. where
  2. TPA_USER_CONTACTS.CONTACT_SEQ_ID = 1670 AND
  3.   TPA_USER_CONTACTS.USER_GENERAL_TYPE_ID IN ('COR', 'INS', 'EMP', 'TTK') AND
  4. (USER_GENERAL_TYPE_ID != 'COR' OR (TPA_USER_CONTACTS.USER_GENERAL_TYPE_ID = 'COR' AND TPA_USER_CONTACTS.GROUP_REG_SEQ_ID = DATA.GROUP_REG_SEQ_ID)) AND
  5. (USER_GENERAL_TYPE_ID != 'EMP' OR (TPA_USER_CONTACTS.USER_GENERAL_TYPE_ID = 'EMP' AND MEMMAP.POL_INSURED_GRP_SEQ_ID IN
  6. (SELECT MEMMAP.POL_INSURED_GRP_SEQ_ID
  7. FROM MICS_ENR_POL_MEMBER,
  8.       MICS_ENR_GRP_MEM_MAP MEMMAP,
  9.   corp_user_mem_map
  10. WHERE MICS_ENR_POL_MEMBER.deleted_yn = 'N'
  11. AND MICS_ENR_POL_MEMBER.tpa_enrollment_id = corp_user_mem_map.tpa_enrollment_id
  12. AND MEMMAP.MEMBER_SEQ_ID = MICS_ENR_POL_MEMBER.MEMBER_SEQ_ID
  13. AND tpa_user_contacts.CONTACT_SEQ_ID = corp_user_mem_map.CONTACT_SEQ_ID
  14. ))) AND
  15. (USER_GENERAL_TYPE_ID != 'INS' OR (TPA_USER_CONTACTS.USER_GENERAL_TYPE_ID = 'INS' AND DATA.INS_SEQ_ID IN
  16.   (SELECT TPA_INS_INFO.INS_SEQ_ID
  17.    FROM TPA_INS_INFO START WITH TPA_INS_INFO.INS_SEQ_ID = TPA_USER_CONTACTS.INS_SEQ_ID CONNECT BY PRIOR TPA_INS_INFO.INS_SEQ_ID = TPA_INS_INFO.INS_PARENT_SEQ_ID)
  18. 50     ))
  19. 51  ;
复制代码
中 in 更改为exists,or 改为union all来连接,是否建议使用with as 来保存join部分的sql语句?

SQL优化.txt

17.64 KB, 阅读权限: 200, 下载次数: 3

sql语句及执行计划

3#
发表于 2013-1-21 11:09:29
最后客户直接把sql改了,这帖子结了先,依然感谢ml的热情帮助!结贴!!

回复 只看该作者 道具 举报

2#
发表于 2012-12-11 13:18:11
请使用 sql health check 脚本 分析该SQL 然后上传HTML
http://www.oracledatabase12g.com ... h-check-script.html

同时用 gather_plan_statistics获得正确的基数 并上传

使用方法:

http://www.askmaclean.com/archiv ... tatistics-hint.html



回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-27 02:21 , Processed in 0.056885 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569