Pessoal,
Tive um problema de query esses dias onde acabei não entendo o porque que
deu certo a solução encontrada por mim na query.
Bom vou explica por parte pro pessoal:
Primeiramente eu tinha essa query onde tinha um gasto de 50 segundos de
processamento: Note os NEGRITOS

SELECT DISTINCT

  A.ID_COBRANCA, A.DT_VENCIMENTO, A.DT_PAGAMENTO,

  A.NUM_EMISSOES, A.VL_EMITIDO, A.VL_RECEBIDO,

  A.PARCELAS_EMITIDAS,

  A.SIT_CONC_ITEM, TE1.DESCRICAO AS DESCR_SIT_CONC,

  A.DEVOLUCAO_ITEM, TE2.DESCRICAO AS DESCR_DEVOLUCAO,

  D.ID_CCORRENTE_FISC, T.DESCR_TIPO_DOC

FROM

  DBSM.COBRANCAS_TRIBUTOS A

******  LEFT JOIN DBSM.TIPOS_DOCUMENTOS T******

 ****** ON A.ID_TIPO_DOC = T.ID_TIPO_DOC******,

  DBSM.TAB_ESTRUTURADA TE1,

  DBSM.TAB_ESTRUTURADA TE2,

  DBSM.PARCELAS_COBRANCAS C,

  DBSM.PARCELAS_TRIBUTOS D

WHERE

  A.SIT_CONC_TAB = TE1.COD_TABELA AND

  A.SIT_CONC_ITEM = TE1.ITEM_TABELA AND

  A.DEVOLUCAO_TAB = TE2.COD_TABELA AND

  A.DEVOLUCAO_ITEM = TE2.ITEM_TABELA AND

******  A.ID_COBRANCA = C.ID_COBRANCA AND******

******  C.ID_PARCELA = D.ID_PARCELA AND******

  D.ID_CCORRENTE_FISC = 1

ORDER BY

  A.ID_COBRANCA;



Fazendo a seguinte mudança na query obtive um tempo de processamento de 2
segundos.



SELECT DISTINCT

  A.ID_COBRANCA, A.DT_VENCIMENTO, A.DT_PAGAMENTO,

  A.NUM_EMISSOES, A.VL_EMITIDO, A.VL_RECEBIDO,

  A.PARCELAS_EMITIDAS,

  A.SIT_CONC_ITEM, TE1.DESCRICAO AS DESCR_SIT_CONC,

  A.DEVOLUCAO_ITEM, TE2.DESCRICAO AS DESCR_DEVOLUCAO,

  D.ID_CCORRENTE_FISC, T.DESCR_TIPO_DOC

FROM

  DBSM.TAB_ESTRUTURADA TE1,

  DBSM.TAB_ESTRUTURADA TE2,

******  DBSM.COBRANCAS_TRIBUTOS A******

******  INNER JOIN DBSM.PARCELAS_COBRANCAS C******

******    ON A.ID_COBRANCA = C.ID_COBRANCA******

******  INNER JOIN DBSM.PARCELAS_TRIBUTOS D******

******    ON C.ID_PARCELA = D.ID_PARCELA******

******  LEFT JOIN DBSM.TIPOS_DOCUMENTOS T******

******    ON A.ID_TIPO_DOC = T.ID_TIPO_DOC ******

WHERE

  A.SIT_CONC_TAB = TE1.COD_TABELA AND

  A.SIT_CONC_ITEM = TE1.ITEM_TABELA AND

  A.DEVOLUCAO_TAB = TE2.COD_TABELA AND

  A.DEVOLUCAO_ITEM = TE2.ITEM_TABELA AND

  D.ID_CCORRENTE_FISC = 1

ORDER BY

  A.ID_COBRANCA;





Alguem poderia me explicar o pq dessa grande diferença de processamento por
uma simples mudança de ordem de JOIN ???



Obrigado Bruno




--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 

 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a