公司之前有这样一个需求,需要从我们系统给外部系统提供数据,但因为没有其他工具,所以选择的是Oracle的spool off命令。具体做法是:先写了一个shell脚本,然后通过shell脚本去调用sql脚本,sql脚本里的主要内容是
spool /某路径/a.txt
select
A.1||CHAR||
B.1||CHAR||
C.1
FROM A,B,C
WHERE ....
spool off
exit
对于上面的那个查询语句,如果放到PlSql里,手动执行的话,大概是需要30分钟左右的,但是,目前我们是放在了一个调度平台上,然其自动调度的,调度的情况是,先执行shell脚本,然后shell脚本会调用这个sql脚本,但现在的问题是,这样一来,本来手动跑30分钟就出结果的sql,却跑了5、6个小时,这其中差距也太大了。查询的那些表的数据库确实很大,都是上千万的,但是,最后查询出来的结果其实只有几十万而已,需要查出来的字段大概十几个吧,每天生产的数据文件大小都在500M朝上多点。
现在的疑问就是,以上用spool off那样生成数据文件是不是真的就很慢,性能很差?还是,可能是其他的问题呢?求教数据库高手啊 !!!!