SQL语句稍微有点复杂,类似于:
WITH MYTABLE AS
(
SELECT XXX FROM TABLE1
START WITH aaa IN (SELECT AAA FROM TABLE2)
CONNECT BY PRIOR aaa=bbb
UNION ALL
SELECT XXX FROM TABLE3
UNION ALL
SELECT XXX FROM TABLE4
)
SELECT F1, F2 FROM TABLE5
WHERE KEY IN (SELECT XXX FROM MYTABLE)
SQL语句在PL/SQL中执行是比较快的,用时3~5秒,返回大约1.5w行数据。
在C++程序中,执行非常慢,后来用日志跟踪,发现Fetch数据时每隔1000行左右就卡2分钟,第二个1000行卡2分钟+7~8秒,第三个1000行卡2分钟+7~8秒
x2,以此类推。。。最后执行完需要40分钟。
如果注释掉With段中的递归部分(这个表有10w+数据),执行会稍微快一点,但依然不理想,用时大约10秒+。
如果直接执行SELECT * FROM TABLE2,返回10w+行数据也是在1,2秒内完成的。
另,TABLE2大表一共2,3个字段,每个字段上都有索引了。
可能是什么问题呢??