我现在又个存储过程  我用到了sample 取随机现在有个问题,我这个存储过程用到了两层嵌套的循环即 for ... loop
       
     ... 
        
       for loop两个表的数据量都达到千万,怎么随机更有效率呢?? 求达人相助。

解决方案 »

  1.   

      FOR acct IN (SELECT ucracct_cust_code,
                          ucracct_prem_code,
                          ucracct_cycl_code,
                          ucracct_status_ind
                     FROM ucracct
                    WHERE ucracct_cycl_code >= cycle_code_begin
                      AND ucracct_cycl_code <= cycle_code_end
                      AND (account_type = '%' OR
                          ucracct_status_ind = account_type)) --
       LOOP
        IF mod(rows_int, interval_int) = 0 THEN
          FOR chg IN (SELECT uabopen_serv_num,
                             uabopen_srat_code,
                             uabopen_scat_code,
                             uabopen_charge_date,
                             uabopen_ar_trans,
                             uabopen_billed_chg,
                             uabopen_balance,
                             uabopen_budget_variance
                        FROM uabopen 
                       WHERE uabopen_prem_code = acct.ucracct_prem_code
                         AND uabopen_cust_code = acct.ucracct_cust_code
                         AND uabopen_bad_debt_status_code IS NULL)       LOOP就这两层循环  uabopen  ucracct 都是千万级以上数据
      

  2.   

    用sql改写不可以么?一般来说sql的效率高点.
      

  3.   

    可以尝试分步用sql实现.
    以前做电信报表统计的时候,遇到话单表的统计,都是一步步来的.
    cursor能不用就尽量不要用了.