公司之前有这样一个需求,需要从我们系统给外部系统提供数据,但因为没有其他工具,所以选择的是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那样生成数据文件是不是真的就很慢,性能很差?还是,可能是其他的问题呢?求教数据库高手啊 !!!!