ORACLE 查询语句一直执行中,查询不出结果.是什么原因

sunny2365 2018-07-26 04:50:09
有如下SQL语句:
SELECT COUNT(*)
FROM SP
INNER JOIN EEPP
ON SP.SP_STORE_ID = EEPP_ACCOUNT_PICKUP_STORE_ID
AND SP.SP_COMPANY_GROUP_ID = EEPP.EEPP_COMPANY_GROUP_ID

INNER JOIN SIE
ON EEPP_ACCOUNT_PICKUP_STORE_ID = SIE_STORE_ID
AND EEPP_COLLECT_DATE = SIE_DATE
AND EEPP_COMPANY_GROUP_ID = SIE_COMPANY_GROUP_ID
AND SIE_NO = '01'

INNER JOIN TSM
ON TSM_ID = '0220'
AND TSM_SUB_VALUE =EEPP.EEPP_ECCODE
AND TSM_SUB_VALUE3 =SP.SP_COMPANY_ID

WHERE 1=1
AND SP_ACCOUNTANT = 'SP'
AND SP_COMPANY_ID = '3100'
AND SP_COMPANY_GROUP_ID = '40'
这样写法一直执行中,查询不出结果。
1. 如果吧“3100” 改成”1100“ ,把 ‘40’ 改成'30' 可以执行出结果。
2. 或者注释条件中(除1=1) 其中任何一行也可执行出结果。不会一直执行中;
3.或者去掉 “ INNER JOIN TSM
ON TSM_ID = '0220'
AND TSM_SUB_VALUE =EEPP.EEPP_ECCODE
AND TSM_SUB_VALUE3 =SP.SP_COMPANY_ID ”这段关联,也能执行出结果。
以上这种查询不出结果 是什么原因造成的,谢谢各位帮忙啦!
...全文
2411 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
riven2011 2019-09-19
  • 打赏
  • 举报
回复
统计信息问题,执行计划两处笛卡尔积连接,重新收集执行计划 或者禁用笛卡尔积
/*+ opt_param('_optimizer_mjc_enabled','false')*/
=PNZ=BeijingL 2019-09-17
  • 打赏
  • 举报
回复
遇到类似问题, 你这原因查到了么
skyspace119 2018-07-27
  • 打赏
  • 举报
回复
在执行的时候看一下等待事件
sunny2365 2018-07-27
  • 打赏
  • 举报
回复
改成LEFT可以出结果,但这样检索出来的结果不正确。LEFT JOIN 和 INNER JOIN 查询的性能有什么差别?
qq_29396447 2018-07-27
  • 打赏
  • 举报
回复
可以试下用left join替换inner join
sunny2365 2018-07-27
  • 打赏
  • 举报
回复
执行计划的如下:
  • 打赏
  • 举报
回复
看下执行计划呢。。。
sunny2365 2018-07-27
  • 打赏
  • 举报
回复
也没查到有锁表,这个条件的数据只有143笔记录。不知ORACEL查询的机制是什么。难道是表有问题吗?
sunny2365 2018-07-27
  • 打赏
  • 举报
回复
表不大,别名字段加上也没有?
碧水幽幽泉 2018-07-27
  • 打赏
  • 举报
回复
关联的所有字段,都需要加上表的别名。
yaiger 2018-07-27
  • 打赏
  • 举报
回复
是不是正好有人在修改这张表,一直没提交?单单查询是不会锁表的
sunny2365 2018-07-27
  • 打赏
  • 举报
回复
重建SP表就可执行出结果了,难道是表有问题,会造成查询死锁吗?
  • 打赏
  • 举报
回复
表很大吗? 还是什么情况

17,089

社区成员

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

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