请教一个调用OCIStmtFetch2比较慢的问题,每隔1000行卡死2分钟

莱昂纳多达芬奇 莱昂纳多达芬奇 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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个字段,每个字段上都有索引了。

可能是什么问题呢??
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
莱昂纳多达芬奇
Oracle 17,133 成员 55,258 内容