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