Pessoal,

 

está é minha primeira mensagem na lista , e pretendo colaborar com o que sei 
para cada vez mais enriquecer a lista.

 

Mas de inicio ja tenho um problema, andei pesquisando e nao encontrei nada a 
respeito . Eu tenho uma funcao que faz uma série de inserts e os mesmo vão 
ficando cada vez mais lento (um processo gradativo) , já pesquisei tudo e nao 
consegui solucao.

 

Este é o trecho que fica lento:

 

  WHILE v_count < arg_bilhetes_a_gerar LOOP   
   
       v_count_bilhetes_gerados := v_count_bilhetes_gerados + 1;
      
       v_array_numeros_aposta := 
fn_gera_num_rand_bilhete(v_jogo_total_numeros_aposta,v_jogo_numero_range_inicial,
 v_jogo_numero_range_final, v_sequence_extracao, v_id_primeira_serie, 
v_id_primeiro_sorteio);     
   
       RAISE NOTICE 'NUMEROS GERADOS --> %', v_array_numeros_aposta;
        
       FOR v_record_sorteio IN select * from tb_extracoes_sorteios order by id 
limit v_jogo_total_sorteios LOOP 

           FOR v_record_serie IN select * from tb_extracoes_series order by id 
limit v_jogo_total_series  LOOP        
           
              RAISE NOTICE 'GRAVANDO BILHETE % -> SORT. % - SERIE % 
',v_count_bilhetes_gerados, v_record_sorteio.id, v_record_serie.id; 
              -- Gravando na tabela de bilhetes               
              v_order_extracao_bilhete := 
nextval('control.seq_extracao_ger_'||currval('control_extracoes_seq')||v_record_sorteio.id||v_record_serie.id);

              INSERT INTO tb_extracoes_bilhetes (fk_extracao_serie, 
fk_extracao, fk_extracao_sorteio,cod_barras_code39, extracao_order, status) 
              VALUES (v_record_serie.id ,v_sequence_extracao, 
v_record_sorteio.id, 
fn_gera_cod_barra_bilhete(v_sequence_extracao,v_record_sorteio.id,v_record_serie.id,v_order_extracao_bilhete
 ) , v_order_extracao_bilhete, 'ABERTO');

              v_sequence_bilhete := currval('tb_extracoes_detalhes_id_seq');    
          
              
              -- Gravando as fracoes

              FOR v_count_fracoes IN 1..v_jogo_total_fracoes LOOP
                  INSERT INTO tb_extracoes_bilhetes_fracoes (fracao, 
fk_extracao_bilhete, fk_extracao, cod_barras_code39)            
                  VALUES (v_count_fracoes + 1, v_sequence_bilhete, 
v_sequence_extracao, 
fn_gera_cod_barra_bilhete_fracao(v_sequence_extracao,v_record_sorteio.id,v_record_serie.id,v_order_extracao_bilhete,
 v_count_fracoes +1) );
              END LOOP;

              
              -- Gravando os numeros 

              v_count_numeros := 0;
              FOR  v_count_numeros IN 0..v_jogo_total_numeros_aposta-1  LOOP
                       
                       INSERT INTO tb_extracoes_bilhetes_numeros (num_aposta, 
fk_extracao, fk_extracao_bilhete) 
                       VALUES (v_array_numeros_aposta[v_count_numeros], 
v_sequence_extracao, v_sequence_bilhete );

              END LOOP;
   
                            
              -- Finalizando o bilhete                     
              
           END LOOP;
       END LOOP;        
   
   END LOOP;
   

_________________________________________________________________
Compartilhe os momentos mais importantes da sua vida.
http://www.microsoft.com/brasil/windows/windowslive/products/photos-share.aspx?tab=1
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a