高分请教这个SQL语句为什么会运行很久?
0
select执行上面的SQL语句之后就一直在运行,得不出结果。
H.RENO,
B.NAME,
H.RBNO,
H.ENO,
A.NAME,
H.BNO
from
HTABLE H
join
NAMETABLE A
on
(A.NUM = 2 and
H.ENO = A.ENO and
H.RENO <> A.ENO)
join
NAMETABLE B
ON
(H.RENO = B.ENO)
ORDER BY
H.RENO,
H.RBNO
表NAMETABLE里面有2万条符合“NUM = 2”的记录。但是如果NAMETABLE里的记录减少到300条的话就可以查询出数据。或者把A.NUM = 2去掉也可以得出数据。
请问该如何解决这个问题?
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
2 个回复
老头子 - 专注是唯一的捷径 2015-10-19 回答
赞同来自: houyichong
-----
-----
初步猜测是NUM字段是有索引的,但是由于错误的统计信息导致索引评估失败,尝试加上下面这个hint再执行试试,如果不行建议你把执行计划发出来。
select /*+ full(A)*/
H.RENO, B.NAME, H.RBNO, H.ENO, A.NAME, H.BNO
from HTABLE H
join NAMETABLE A
on (A.NUM = 2 and H.ENO = A.ENO and H.RENO <> A.ENO)
join NAMETABLE B
ON (H.RENO = B.ENO)
ORDER BY H.RENO, H.RBNO
悟 - 取是能力,舍是境界 2015-10-18 回答
赞同来自: