我的SQL语句出现很奇怪的问题!请您帮忙解答!

shmilylee shmilylee 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
语句如下
select t1.msisdn,t1.state,t1.suspend_date,t1.customer_name,t1.sex,t1.deal_code,t1.start_date,t1.end_date 
from (select gsm_user_yz.msisdn,gsm_user_yz.state,gsm_user_yz.suspend_date,p_customer_yz.customer_name,
p_customer_yz.sex,user_smscall_yz.deal_code,user_smscall_yz.start_date,user_smscall_yz.end_date
from yzzw.gsm_user_yz,yzzw.p_customer_yz,yzzw.user_smscall_yz
where yzzw.gsm_user_yz.customer_id = p_customer_yz.customer_id and
yzzw.gsm_user_yz.gsm_user_id = user_smscall_yz.gsm_user_id and
user_smscall_yz.deal_code = '5026' and
yzzw.gsm_user_yz.msisdn in(select msisdn from YZYD_GWB_MSISDNTEMP))t1
inner join
(select t.msisdn,max(t.start_date) start_date
from (select gsm_user_yz.msisdn,gsm_user_yz.state,gsm_user_yz.suspend_date,p_customer_yz.customer_name,
p_customer_yz.sex,user_smscall_yz.deal_code,user_smscall_yz.start_date,user_smscall_yz.end_date
from yzzw.gsm_user_yz,yzzw.p_customer_yz,yzzw.user_smscall_yz
where yzzw.gsm_user_yz.customer_id = p_customer_yz.customer_id
and yzzw.gsm_user_yz.gsm_user_id = user_smscall_yz.gsm_user_id
and user_smscall_yz.deal_code = '5026'
and yzzw.gsm_user_yz.msisdn in(select msisdn from YZYD_GWB_MSISDNTEMP)) t group by t.msisdn ) t2
on t1.msisdn = t2.msisdn and t1.start_date = t2.start_date


红色的部分是个子查询,能够正确的查询出结果,但是整条语句运行起来就陷入了漫长的等待

select t1.msisdn,t1.state,t1.suspend_date,t1.customer_name,t1.sex,t1.deal_code,t1.start_date,t1.end_date
from (select gsm_user_yz.msisdn,gsm_user_yz.state,gsm_user_yz.suspend_date,p_customer_yz.customer_name,
p_customer_yz.sex,user_smscall_yz.deal_code,user_smscall_yz.start_date,user_smscall_yz.end_date
from yzzw.gsm_user_yz,yzzw.p_customer_yz,yzzw.user_smscall_yz
where yzzw.gsm_user_yz.customer_id = p_customer_yz.customer_id and
yzzw.gsm_user_yz.gsm_user_id = user_smscall_yz.gsm_user_id and
user_smscall_yz.deal_code = '5026' and
yzzw.gsm_user_yz.msisdn in(139527...,138527...))t1
inner join
(select t.msisdn,max(t.start_date) start_date
from (select gsm_user_yz.msisdn,gsm_user_yz.state,gsm_user_yz.suspend_date,p_customer_yz.customer_name,
p_customer_yz.sex,user_smscall_yz.deal_code,user_smscall_yz.start_date,user_smscall_yz.end_date
from yzzw.gsm_user_yz,yzzw.p_customer_yz,yzzw.user_smscall_yz
where yzzw.gsm_user_yz.customer_id = p_customer_yz.customer_id
and yzzw.gsm_user_yz.gsm_user_id = user_smscall_yz.gsm_user_id
and user_smscall_yz.deal_code = '5026'
and yzzw.gsm_user_yz.msisdn in(139527...,138527...)) t group by t.msisdn ) t2
on t1.msisdn = t2.msisdn and t1.start_date = t2.start_date
这里换成直接的内容速度很快,毫秒级的!

不知道为什么会出现这样的情况!
...全文
评论 10
收藏 已收藏
分享
返回顶部
shmilylee
Oracle 高级技术 3,499 成员 18,710 内容