本人水平有限,帮忙优化一下sql,谢谢

一杯时光 2013-06-03 03:20:16
如下sql:
select *
from (select rownum rn, t.*
from (select usr_ent_id,
trr_id,
trr_name,
trr_gender,
trr_birthday,
trr_company,
trr_education,
trr_id_no,
trr_main_teach,
trr_mobile,
trr_email,
trr_itm_total_count
from teacherResume --讲师表(大约500数据)
left join reguser --用户表 (大约35万数据)
on trr_ent_id = usr_ent_id
WHERE trr_ent_id in
(select distinct gpm_ent_id_member
from groupmember --用户与用户组及用户组与用户组关系表(大约100万数据)
where gpm_type = 'USR_PARENT_USG'--用户与用户组
and sysdate between gpm_start_timestamp and
gpm_end_timestamp
and gpm_ent_id_group in
(select grp.gpm_ent_id_member
from (select gpm_ent_id_member,
gpm_ent_id_group
from groupmember
where gpm_type = 'USG_PARENT_USG'--用户组与用户组
and sysdate between
gpm_start_timestamp and
gpm_end_timestamp) grp
start with grp.gpm_ent_id_member in
(select tce_ent_id
from tcTrainingCenterTargetEntity --公司与用户组表
where tce_tcr_id = 9)
connect by prior grp.gpm_ent_id_member =
grp.gpm_ent_id_group))
and trr_status is null
AND trr_type = 'INNER'
ORDER BY trr_comment_avg_score desc) t
where rownum <= 10)
where rn > 0

执行计划如下:



说明: 1、每个公司下面有1000个左右用户组
2、用户组有3.6万个左右
3、一个公司可能对应多个用户组
在线等大虾们
...全文
142 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
一杯时光 2013-06-05
大神们 都哪去了? 怎么没人回帖啊,救命啊
回复
一杯时光 2013-06-03
引用 2 楼 ainiyaa 的回复:
这么多嵌套子查询
我也没有好的办法,我试用表连接,发现性能更差。。。。
回复
白脑哥 2013-06-03
这么多嵌套子查询
回复
一杯时光 2013-06-03
补上groupmember表结构:


回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-06-03 03:20
社区公告
暂无公告