CLOB非常慢

时间:2013-11-27 23:57:34

标签: database oracle clob

我在DB ORACLE上发送带附件的电子邮件。我形成了这个附件,但它非常慢

FOR x IN (select *
from l_sulkk
where PROJECT_ID = proj_id)
    LOOP
        v_clob :=
               v_clob
            || x.CONTRACT_NUMBER
            || ';'
            || TO_CHAR(x.PERSON_ID)
            || ';'
            || x.BEHAV_MODEL
            || ';'
            || TO_CHAR(x.BEHAV_MODEL#DATE_CALC, 'dd.mm.yyyy hh24:mi:ss')
            || ';'
            || TO_CHAR(x.DATE_INSERT, 'dd.mm.yyyy hh24:mi:ss')
            || ';'
            || TO_CHAR(x.DONE_DATE, 'dd.mm.yyyy hh24:mi:ss')
            || ';'
            || x.ERROR_MSG
            || ';'
            || TO_CHAR(x.PHONES_ID)
            || ';'
            || x.PHONES_NUM
            || ';'
            || TO_CHAR(x.INFORMER_PK)
            || ';'
            || TO_CHAR(x.CLIENT_TIME_ZONE)
            || ';'
            || x.CITIES_KID_FACT*/
            || UTL_TCP.crlf;

    END LOOP; 

如何优化此过程有任何变体?

1 个答案:

答案 0 :(得分:0)

您可以使用 VARCHAR2缓冲区获取最多32k的数据块,然后使用 dbms_lob.writeappend组成CLOB。

此外,您可以在SQL本身中进行一些预连接(只是不要使用像UTL_TCP.crlf那样的pl / sql函数。

这是一般的想法。 您也可以check this post获得一些测试结果。