先给大大们磕头!!
select
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
执行上面的SQL语句之后就一直在运行,得不出结果。
表NAMETABLE里面有2万条符合“NUM = 2”的记录。但是如果NAMETABLE里的记录减少到300条的话就可以查询出数据。或者把A.NUM = 2去掉也可以得出数据。
请问该如何解决这个问题?
------解决思路----------------------
先把 order by 去掉,看看什么情况
建议把 建表语句和 IX 情况都贴上来。
------解决思路----------------------
先给出执行计划吧
还有数据量和结果集大概是什么情况
------解决思路----------------------
H.ENO,H.RENO,A.ENO,B.ENO 是否建了索引
------解决思路----------------------
对nametable表的num字段建个索引看看
------解决思路----------------------
问这个要把执行计划贴出来
------解决思路----------------------
提供数据量,表上的索引,语句执行计划会方便问题的诊断.
如果不是把语句优化到最优,只要出结果就行.根据你说的把A.NUM = 2去掉也可以得出数据,也就是说数据量大都可以得出数据,
说明目前语句的执行计划有问题,可尝试先重新收集一个表上的统计信息.