oracle sql 语句优化

小鸡蘑菇yu 2013-01-22 10:38:25

SELECT
t.aoi_name,
( SELECT count(p.per_id) FROM d_person_info p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.input_date > to_date('2010-10-10','yyyy-mm-dd') and p.input_date < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_person,
( SELECT count(p.per_id) FROM d_body_check_info p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.BCI_DATE > to_date('2010-10-10','yyyy-mm-dd') and p.BCI_DATE < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_bodycheck,
( SELECT count(p.per_id) FROM D_NEWBORN_HOME_VISIT p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.new_visitDate > to_date('2010-10-10','yyyy-mm-dd') and p.new_visitDate < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_born,
( SELECT count(p.per_id) FROM D_oneChild_health_exam p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.OC_visitDate > to_date('2010-10-10','yyyy-mm-dd') and p.OC_visitDate < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_one,
( SELECT count(p.per_id) FROM D_twoChild_health_exam p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.TWC_visitDate > to_date('2010-10-10','yyyy-mm-dd') and p.TWC_visitDate < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_two,
( SELECT count(p.per_id) FROM D_CHILD_HEALTH_EXAM p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.CHE_DATE > to_date('2010-10-10','yyyy-mm-dd') and p.CHE_DATE < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_six,
( SELECT count(p.per_id) FROM D_FIRST_follow_service p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.ffs_fillDate > to_date('2010-10-10','yyyy-mm-dd') and p.ffs_fillDate < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_first,
( SELECT count(p.per_id) FROM D_follow_service_info p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.fts_wVisDate > to_date('2010-10-10','yyyy-mm-dd') and p.fts_wVisDate < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_second,
( SELECT count(p.per_id) FROM D_Postpartum_visits p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.pv_followDate > to_date('2010-10-10','yyyy-mm-dd') and p.pv_followDate < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_postpartum,
( SELECT count(p.per_id) FROM D_Postpartum_healthCheck p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.phc_followDate > to_date('2010-10-10','yyyy-mm-dd') and p.phc_followDate < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_postpartum_health,
( SELECT count(p.per_id) FROM D_DPF_Record_INFO p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.DPF_Date > to_date('2010-10-10','yyyy-mm-dd') and p.DPF_Date < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_dpf,
( SELECT count(p.per_id) FROM D_HPFS_RECORD_INFO p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.HPF_DATE > to_date('2010-10-10','yyyy-mm-dd') and p.HPF_DATE < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_hpfs,
( SELECT count(p.per_id) FROM D_GMIP_Follow_INFO p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.GMF_FollowDate > to_date('2010-10-10','yyyy-mm-dd') and p.GMF_FollowDate < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_gmf,
( SELECT count(p.per_id) FROM D_Infectious_DIS p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.DID_DDate > to_date('2010-10-10','yyyy-mm-dd') and p.DID_DDate < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_infectious,
( SELECT count(p.per_id) FROM D_Older_Case_Info p, m_user_info u WHERE u.aoi_id = t.aoi_id and u.user_id = p.input_user and p.valid = '1' and p.OLDC_follow_Date > to_date('2010-10-10','yyyy-mm-dd') and p.OLDC_follow_Date < to_date('2012-10-10','yyyy-mm-dd')+1 ) v_older
FROM m_admin_organ_info t , s_organ_info b
WHERE t.org_id = b.org_id
and t.valid = '1' and t.area_sid like '36012210%' and b.ole_id='2'


针对你的查询条件 来建立所以
一般where
里面包含的 条件建立个索引
会快一点

条件这里这么建立索引,啊。真心不这么会。
...全文
372 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小鸡蘑菇yu 2013-01-24
  • 打赏
  • 举报
回复

我不改了。 就建立索引, 要是还不行在改吧。。。
。。。。
我还是太年轻。
小鸡蘑菇yu 2013-01-24
  • 打赏
  • 举报
回复
引用 6 楼 ksdy138141314 的回复:
试试加并行吧, 不建议楼主一个sql这样写。反而降低磁盘io,性能更慢。
select * from (select ) 吗。
小鸡蘑菇yu 2013-01-24
  • 打赏
  • 举报
回复
引用 5 楼 linwaterbin 的回复:
这种语句即便索引建立了感觉效率也不会高到哪里吧
我建立了索引快乐好多。。 15s 出来了
linwaterbin 2013-01-23
  • 打赏
  • 举报
回复
这种语句即便索引建立了感觉效率也不会高到哪里吧
yjytiantang 2013-01-23
  • 打赏
  • 举报
回复
可以考虑改变一下业务逻辑; 查询里面的那一堆count(xx) 可以考虑弄个临时表; 建索引的话,哪些字段常用,且有较大的识别度,能过滤掉大部分数据,就在该字段建; 起码这个需要建一下:t.org_id = b.org_id
ksdy138141314 2013-01-23
  • 打赏
  • 举报
回复
试试加并行吧, 不建议楼主一个sql这样写。反而降低磁盘io,性能更慢。
yuppy 2013-01-22
  • 打赏
  • 举报
回复
引用 2 楼 justmaybe_ 的回复:
引用 1 楼 yuppy 的回复:为啥老是不想想自己语句的问题。。 先想到的都是加索引啥的。 好吧。我觉得LZ写的好乱。 。。因为他表确实太多了。。。。
和表多少没关系。 你的各种P表, 我觉得可以先和m_admin_organ_info t , s_organ_info b 关联过滤出最小集合。 只是建议。
小鸡蘑菇yu 2013-01-22
  • 打赏
  • 举报
回复
引用 1 楼 yuppy 的回复:
为啥老是不想想自己语句的问题。。 先想到的都是加索引啥的。 好吧。我觉得LZ写的好乱。
。。因为他表确实太多了。。。。
yuppy 2013-01-22
  • 打赏
  • 举报
回复
为啥老是不想想自己语句的问题。。 先想到的都是加索引啥的。 好吧。我觉得LZ写的好乱。

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧