Aprenda PL/SQL

Consulta comprometida

Tuning de Banco, Tuning de SQL, Ferramentas de tuning
  

Mensagemem Ter, 06 Ago 2013 11:48 am

Bom dia a todos.

Estou com um pequeno problema aqui na empresa e acho que podem me ajudar a melhorar minha consulta.

Criei o seguinte SQL para fazer a seguinte consulta:

Preciso pegar o número de todas as autorizações que possuem participantes mas que não têm nenhum pedido criado com status "ORC" ou "FAL".

Vejam o comando:

Código: Selecionar todos
SELECT DISTINCT
  AD.AUTORIZACAO AS AUTORIZACAO
FROM
  AUTORIZACAO_CASSI_DATA AD
INNER JOIN PARTICIPANTES PA
ON
  AD.ID_PARTICIPANTE = PA.IDENTIFICADOR_PARTICIPANTE
WHERE
  AD.STATUS_INTERNO       = 'D'
AND AD.EVENTO_SITUACAO   IN ('A','L')
AND PA.TIPO_OPERACAO NOT IN 'E'
AND PA.STATUS NOT        IN 'S'
AND AD.AUTORIZACAO NOT   IN
  (
    SELECT DISTINCT
      CP.AUTORIZACAO_CASSI
    FROM
      FAT_CAPAPEDIDO_ERP CP
    WHERE
      CP.AUTORIZACAO_CASSI = AD.AUTORIZACAO
    AND CP.STATUS         IN ('ORC','FAL')
  )
ORDER BY
  AD.AUTORIZACAO ASC


Problema: Graças ao subselect que utilizo a consulta está demorando cerca de 1 minuto para retornar apenas 15 linhas...

alguém saberia uma maneira de otimizar essa consulta?

Valeu.
thalessan

Mensagemem Sex, 09 Ago 2013 1:34 pm

@thalessan,

Gere um plano de execução e poste ele aqui!

[]s
fbifabio
Localização: São Paulo - SP

Fábio Prado
www.fabioprado.net



Voltar para DBA Tuning

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante