SQL esta demorando muito, mais em outro banco vai rápido

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Sex, 17 Ago 2007 5:55 pm

Bom pessoal estou com um problema.

Tenho dois bancos diferentes.
Um com a versão oracle 10.1.0.4.0
Outro com a versão 10.2.0.3.0

Bom o mesmo sql, com bases igual, indexes iguais e tabelas iguais.
Em um banco esta denorando 1 segundo, em outro demora 1minuto e 30 segundos.
Este é o comando
Código: Selecionar todos
SELECT DISTINCT pda.id_parcela
              , a.*
              , ROUND (a.vlr_autenticado, 2) AS real_autenticado
              , a.vlr_pagar real_pagar
              , b.sigla BANCO
              , s.descricao AS situacao
           FROM PARCELA_DOC_ARRECADACAO pda, ARRECADACAO a, ARRECADACAO_SITUACAO s, DOC_ARRECADACAO doc, BANCO b
          WHERE b.id_banco(+) = a.id_banco
            AND a.id_arrecadacao_situacao = s.id_arrecadacao_situacao
            AND doc.numero_controle(+) = a.numero_controle
            AND pda.id_doc_arrecadacao(+) = doc.id_doc_arrecadacao
            AND pda.id_parcela = 10791084


Se eu tirar o sinal de (+) vai rápido nos dois bancos, mais dai minha regra de negocio não funciona.

Olha o plano de execução em cada banco

No 10.1.0.4.0
Código: Selecionar todos
Operation   Object Name   Rows   Bytes   Cost   Object Node   In/Out   PStart   PStop

SELECT STATEMENT Optimizer Mode=CHOOSE      1         47601                                  
  SORT UNIQUE      1     168     47601                                  
    NESTED LOOPS      1     168     47600                                  
      NESTED LOOPS OUTER      1     142     47599                                  
        HASH JOIN      1     131     47598                                  
          TABLE ACCESS BY INDEX ROWID   BLU.PARCELA_DOC_ARRECADACAO   1     12     4                                  
            INDEX RANGE SCAN   BLU.IDX_PADOAR_ID_PARCELA   1         3                                  
          HASH JOIN RIGHT OUTER      1 M   206 M   47581                                  
           TABLE ACCESS FULL   BLU.DOC_ARRECADACAO   2 M   59 M   20520                                  
            TABLE ACCESS FULL   BLU.ARRECADACAO   1 M   168 M   6406                                  
        TABLE ACCESS BY INDEX ROWID   BLU.BANCO   1     11     1                                  
          INDEX UNIQUE SCAN   BLU.IDX_PK_BANC   1         0                                  
      TABLE ACCESS BY INDEX ROWID   BLUI.ARRECADACAO_SITUACAO   1     26     1                                  
        INDEX UNIQUE SCAN   BLU.IDX_PK_ARSI   1         0                                  


No 10.2.0.3.0
Código: Selecionar todos
Operation   Object Name   Rows   Bytes   Cost   Object Node   In/Out   PStart   PStop

SELECT STATEMENT Optimizer Mode=CHOOSE      1         8                                  
  HASH UNIQUE      1     187     8                                  
    NESTED LOOPS OUTER      1     187     7                                  
      NESTED LOOPS      1     176     6                                  
        NESTED LOOPS      1     150     5                                  
          NESTED LOOPS      1     34     4                                  
            TABLE ACCESS BY INDEX ROWID   BLU.PARCELA_DOC_ARRECADACAO   1     12     3                                  
              INDEX RANGE SCAN   BLU.IDX_PADOAR_ID_PARCELA   1         2                                  
            TABLE ACCESS BY INDEX ROWID   BLU.DOC_ARRECADACAO   1     22     1                                  
              INDEX UNIQUE SCAN   BLU.IDX_PK_DOAR   1         1                                  
          TABLE ACCESS BY INDEX ROWID   BLU.ARRECADACAO   1     116     1                                  
            INDEX RANGE SCAN   BLU.IDX_ARRE_NUMERO_CONTROLE   1         1                                  
        TABLE ACCESS BY INDEX ROWID   BLU.ARRECADACAO_SITUACAO   1     26     1                                  
          INDEX UNIQUE SCAN   BLU.IDX_PK_ARSI   1         1                                  
      TABLE ACCESS BY INDEX ROWID   BLU.BANCO   1     11     1                                  
        INDEX UNIQUE SCAN   BLU.IDX_PK_BANC   1         1                                  



alguém poderia a me ajudar a revolver este problema.
será que é alguma configuração de banco??
HenriqueMachado
Localização: Blumenau - SC

Abraços,
Henrique Machado Muller

Mensagemem Seg, 20 Ago 2007 11:14 am

Será que ambos tem o mesmo número de linhas? Será que foi coletado estatísticas de ambos de forma igual?
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Seg, 20 Ago 2007 11:48 am

Será que ambos tem o mesmo número de linhas?

Bom o banco que esta demorando muito é um dump de 1 dia atrás do que vai rápido. ou seja o numero de linha é bem aproximado.
Será que foi coletado estatísticas de ambos de forma igual?

Não saberei te responder.
HenriqueMachado
Localização: Blumenau - SC

Abraços,
Henrique Machado Muller

Mensagemem Seg, 20 Ago 2007 12:54 pm

De cara, pode testar o LAST_ANALYZED dos 2 bancos!
Código: Selecionar todos
SQL> select last_analyzed
  2  from all_tables
  3  where table_name='PESSOA'
  4  /

LAST_ANALYZ
-----------
19-AUG-2007


Como eu não sou DBA, talvez tenha outras formas melhores de testar isso.
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Seg, 20 Ago 2007 2:38 pm

Executei o sql acima, e nos dois bancos o LAST_ANALYZED esta com data de 16/08/2007 Dentre as tabelas envolvidas no sql.

É possivel que seja alguma configuração de banco??
HenriqueMachado
Localização: Blumenau - SC

Abraços,
Henrique Machado Muller



Voltar para SQL

Quem está online

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