Sql tuning por dentro de uma package

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

Galera, estou com o seguinte problema.
Tenho uma query pronta, que rodando ela por fora da package ela executa imediatamente, mas quando eu simplesmente copio ela para dentro da package, e executo por la, ela fica lenta, e leva mais de 10 minutos para rodar.
Alguém sabe porque isto acontece?
Não mudo nada nela, simplesmente copio e colo em uma procedure e executo pela procedure.
Exemplo do que executo:

Selecionar tudo

  INSERT INTO tmp_generic_table
      (number_column1
      ,number_column2
      ,number_column3
      ,varchar_column1)
      SELECT esc.cli_cdgo
            ,esc.esc_seqn
            ,30
            ,'CLIENTES'
        FROM esc
       WHERE esc.esc_situacao = 'A'
         AND NOT EXISTS (SELECT e.cli_cdgo
                    ,e.esc_seqn
                    ,30
                FROM ped e
               WHERE (e.ped_dadg BETWEEN TRUNC(SYSDATE) - 30 AND TRUNC(SYSDATE))
                 AND pck_pedidos.get_somente_entrada(e.ped_nmro) = e.ped_nmro
                 AND esc.cli_cdgo = e.cli_cdgo
                 AND esc.esc_seqn = e.esc_seqn);
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Opa,

você realiza esse "Insert ... SELECT ... " por dentro e por fora da package, e só no "modo-cru" ele roda imediatamente?
Não se passa nenhum parâmetro por dentro da package???
Sua procedure da package faz apenas isso ou faz mais coisa que poderia atrasar o precessamento???
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

Oi, rodo ela exatamente assim, por dentro e por fora.
Só tem isso na verdade no procedimento, na dada de passagem de parâmetros.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Oi David,

Faça um pequeno teste: crie uma procedure independente, não inclusa no código de nenhuma package.

Selecionar tudo

create or replace procedure sp_teste
is
begin
<SEU INSERT>;
end sp_teste;
Depois, execute esta procedure.

Verifique se a procedure é executada imediatamente ou demora para processar.

Abraços,

Sergio Coutinho
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes