Olá Pessoal.
>
>
>
>Estou passando por um problema sério numa consulta no ambiente de produção, a 
>mesma apresenta lentidão na sua utilização(praticamente todo o sistema a 
>utiliza), como não tenho experiência em Tunning de consulta, estou recorrendo 
>a ajuda de vocês. 
>
>
>Será que poderiam me ajudar a melhorar a consulta de forma que eu consiga ter 
>ganho de desempenho. 
>
>
>Como não tenho muita experiência em SQL, talvez com ajuda de vocês, seja 
>possível reescrever um SQL que foi mal escrito pelo desenvolvedor ou até mesmo 
>sugerir a criação índice.
>
>
>
>
>Obs.: o script foi criado para T-SQL mas pelo que pude analisar, o que impacta 
>mesmo são as condições utilizadas como clausulas UNION, DISTINCT. Precisaria 
>mesmo de uma apoio para reescrever a consulta utilizando melhor a linguagem 
>SQL para optimizar a mesma.
>
>
>
>Toda ajuda é sempre bem vinda.
>Desde já agradeço o apoio de sempre.
  ----------

CREATE             PROCEDURE [dbo].[SP_AV_SELECT_MINHAS_AVALIACOES]    
(    
 @CPF VARCHAR(14)    
)    
AS    
-- MINHAS AVALIAÇÕES    
SELECT     COD_AVALIACAO, COD_CR_ASSOCIADO, COD_EMP_ASSOCIADO, DES_NOME_CARGO, 
COD_MODELO, ANO_APLICACAO, COD_STATUS, IDPESSOA,     
           DAT_CRIACAO, USR_CRIACAO, DAT_ULT_ATUALIZACAO, USR_ULT_ATUALIZACAO, 
DAT_LIMITE_PREENCHIMENTO, DAT_CRIACAO_RELATORIO,     
           USR_CRIACAO_RELATORIO, CPF_ASSOCIADO, RELATORIO_GERADO    
FROM      DBO.AV_AVALIACAO    
WHERE     (CPF_ASSOCIADO = @CPF)    
-- MINHAS AVALIAÇÕES    
UNION    
-- AVALIAÇÕES SUBORDINADOS    
SELECT    DBO.AV_AVALIACAO.COD_AVALIACAO, DBO.AV_AVALIACAO.COD_CR_ASSOCIADO, 
DBO.AV_AVALIACAO.COD_EMP_ASSOCIADO,     
          DBO.AV_AVALIACAO.DES_NOME_CARGO, DBO.AV_AVALIACAO.COD_MODELO, 
DBO.AV_AVALIACAO.ANO_APLICACAO,     
          DBO.AV_AVALIACAO.COD_STATUS, DBO.AV_AVALIACAO.IDPESSOA, 
DBO.AV_AVALIACAO.DAT_CRIACAO, DBO.AV_AVALIACAO.USR_CRIACAO,     
          DBO.AV_AVALIACAO.DAT_ULT_ATUALIZACAO, 
DBO.AV_AVALIACAO.USR_ULT_ATUALIZACAO, 
DBO.AV_AVALIACAO.DAT_LIMITE_PREENCHIMENTO,     
          DBO.AV_AVALIACAO.DAT_CRIACAO_RELATORIO, 
DBO.AV_AVALIACAO.USR_CRIACAO_RELATORIO, DBO.AV_AVALIACAO.CPF_ASSOCIADO, 
DBO.AV_AVALIACAO.RELATORIO_GERADO    
FROM      DBO.AV_QUESTIONARIO INNER JOIN    
          DBO.AV_AVALIACAO ON DBO.AV_QUESTIONARIO.COD_AVALIACAO = 
DBO.AV_AVALIACAO.COD_AVALIACAO    
WHERE     DBO.AV_QUESTIONARIO.COD_TIPO_QUESTIONARIO = 2 AND     
          (DBO.AV_QUESTIONARIO.IDPESSOA IN (SELECT DBO.USUARIO_DADOS.IDPESSOA   
 
                                             FROM  DBO.USUARIO_DADOS    
                                             WHERE CPF = @CPF AND IDPESSOA <> 
''))    
-- AVALIAÇÕES SUBORDINADOS    
UNION    
-- AVALIAÇÕES QUESTIONÁRIOS PENDENTES    
SELECT    DBO.AV_AVALIACAO.COD_AVALIACAO, DBO.AV_AVALIACAO.COD_CR_ASSOCIADO, 
DBO.AV_AVALIACAO.COD_EMP_ASSOCIADO,     
                      DBO.AV_AVALIACAO.DES_NOME_CARGO, 
DBO.AV_AVALIACAO.COD_MODELO, DBO.AV_AVALIACAO.ANO_APLICACAO,     
                      DBO.AV_AVALIACAO.COD_STATUS, DBO.AV_AVALIACAO.IDPESSOA, 
DBO.AV_AVALIACAO.DAT_CRIACAO, DBO.AV_AVALIACAO.USR_CRIACAO,     
                      DBO.AV_AVALIACAO.DAT_ULT_ATUALIZACAO, 
DBO.AV_AVALIACAO.USR_ULT_ATUALIZACAO, 
DBO.AV_AVALIACAO.DAT_LIMITE_PREENCHIMENTO,     
                      DBO.AV_AVALIACAO.DAT_CRIACAO_RELATORIO, 
DBO.AV_AVALIACAO.USR_CRIACAO_RELATORIO, DBO.AV_AVALIACAO.CPF_ASSOCIADO, 
DBO.AV_AVALIACAO.RELATORIO_GERADO    
FROM         DBO.AV_QUESTIONARIO INNER JOIN    
                      DBO.AV_AVALIACAO ON DBO.AV_QUESTIONARIO.COD_AVALIACAO = 
DBO.AV_AVALIACAO.COD_AVALIACAO    
WHERE     DBO.AV_QUESTIONARIO.STA_QUESTIONARIO = 1    
    AND (DBO.AV_AVALIACAO.COD_STATUS = 1)    
    AND (DBO.AV_QUESTIONARIO.IDPESSOA IN (SELECT     DBO.USUARIO_DADOS.IDPESSOA 
   
                            FROM          DBO.USUARIO_DADOS    
                            WHERE      CPF = @CPF AND IDPESSOA <> ''))    
-- AVALIAÇÕES QUESTIONÁRIOS PENDENTES    
UNION    
-- AVALIAÇÕES COM STATUS “DEVOLUTIVA” E SUPERIOR ATUAL DIFERENTE     
SELECT DISTINCT A.COD_AVALIACAO, A.COD_CR_ASSOCIADO, A.COD_EMP_ASSOCIADO,     
           A.DES_NOME_CARGO, A.COD_MODELO, A.ANO_APLICACAO,     
           A.COD_STATUS, A.IDPESSOA, A.DAT_CRIACAO, A.USR_CRIACAO,     
           A.DAT_ULT_ATUALIZACAO, A.USR_ULT_ATUALIZACAO, 
A.DAT_LIMITE_PREENCHIMENTO,     
           A.DAT_CRIACAO_RELATORIO, A.USR_CRIACAO_RELATORIO, A.CPF_ASSOCIADO, 
A.RELATORIO_GERADO    
FROM       DBO.AV_QUESTIONARIO Q, DBO.AV_AVALIACAO A, DBO.USUARIO_DADOS U    
WHERE     Q.COD_TIPO_QUESTIONARIO = 2 AND     
          Q.STA_QUESTIONARIO = 2 AND     
          Q.COD_AVALIACAO = A.COD_AVALIACAO AND    
          A.COD_STATUS = 3 AND     
          U.CPF = A.CPF_ASSOCIADO AND    
          U.DATA_DEMISSAO IS NULL AND     
          (U.IDPESSOA_SUPERIORIMEDIATO IN (SELECT UD.IDPESSOA    
                                           FROM  DBO.USUARIO_DADOS UD    
                                           WHERE UD.CPF = @CPF AND     
                   UD.DATA_DEMISSAO IS NULL AND     
                                                 UD.IDPESSOA <> ''))    
ORDER BY ANO_APLICACAO DESC    
-- AVALIAÇÕES COM STATUS “DEVOLUTIVA” E SUPERIOR ATUAL DIFERENTE     
    
-- USUÁRIO    
SELECT     USUARIO_PK, EMPRESA_FK, PERFIL_FK, NOME_USUARIO, MATRICULA, 
CENTRO_RESULTADO, NOME_CARGO, EMAIL, DATA_DEMISSAO, CPF, DATA_NASC, RG, 
DATA_ADMISSAO,     
           ENDERECO, TELEFONE_COMERCIAL, TELEFONE_CELULAR, PASSAPORTE, 
IDPESSOA_SUPERIORIMEDIATO, IDPESSOA, LOGIN, SENHA, ULTIMO_ACESSO, 
NUMERO_ACESSO,     
           IDUSUARIO_FRAMEWORK    
FROM       DBO.USUARIO_DADOS    
WHERE     (CPF IN (SELECT U.CPF FROM DBO.USUARIO_DADOS U    
                   WHERE U.CPF = @CPF AND U.DATA_DEMISSAO IS NULL AND 
U.IDPESSOA <> ''))    
-- USUÁRIO    
UNION    
-- USUÁRIO SUBORDINADOS    
SELECT     DBO.USUARIO_DADOS.USUARIO_PK, DBO.USUARIO_DADOS.EMPRESA_FK, 
DBO.USUARIO_DADOS.PERFIL_FK, DBO.USUARIO_DADOS.NOME_USUARIO,     
           DBO.USUARIO_DADOS.MATRICULA, DBO.USUARIO_DADOS.CENTRO_RESULTADO, 
DBO.USUARIO_DADOS.NOME_CARGO, DBO.USUARIO_DADOS.EMAIL,     
           (SELECT TOP 1 DATA_DEMISSAO FROM DBO.USUARIO_DADOS U     
            WHERE U.CPF = DBO.USUARIO_DADOS.CPF    
            ORDER BY DATA_DEMISSAO) AS DATA_DEMISSAO,    
           DBO.USUARIO_DADOS.CPF, DBO.USUARIO_DADOS.DATA_NASC, 
DBO.USUARIO_DADOS.RG, DBO.USUARIO_DADOS.DATA_ADMISSAO,     
           DBO.USUARIO_DADOS.ENDERECO, DBO.USUARIO_DADOS.TELEFONE_COMERCIAL, 
DBO.USUARIO_DADOS.TELEFONE_CELULAR, DBO.USUARIO_DADOS.PASSAPORTE,     
           (SELECT TOP 1 IDPESSOA_SUPERIORIMEDIATO     
            FROM DBO.USUARIO_DADOS U     
            WHERE U.CPF = DBO.USUARIO_DADOS.CPF AND DATA_DEMISSAO IS NULL) AS 
IDPESSOA_SUPERIORIMEDIATO, DBO.USUARIO_DADOS.IDPESSOA, DBO.USUARIO_DADOS.LOGIN, 
DBO.USUARIO_DADOS.SENHA,     
           DBO.USUARIO_DADOS.ULTIMO_ACESSO, DBO.USUARIO_DADOS.NUMERO_ACESSO, 
DBO.USUARIO_DADOS.IDUSUARIO_FRAMEWORK    
FROM       DBO.AV_QUESTIONARIO INNER JOIN    
           DBO.AV_AVALIACAO ON DBO.AV_QUESTIONARIO.COD_AVALIACAO = 
DBO.AV_AVALIACAO.COD_AVALIACAO INNER JOIN    
           DBO.USUARIO_DADOS ON DBO.AV_AVALIACAO.IDPESSOA = 
DBO.USUARIO_DADOS.IDPESSOA    
WHERE     DBO.AV_QUESTIONARIO.COD_TIPO_QUESTIONARIO = 2 AND     
         (DBO.AV_QUESTIONARIO.IDPESSOA IN     
                           (SELECT     DBO.USUARIO_DADOS.IDPESSOA    
                            FROM       DBO.USUARIO_DADOS    
                            WHERE      CPF = @CPF AND IDPESSOA <> ''))    
-- USUÁRIO SUBORDINADOS    
UNION    
-- USUÁRIO QUESTIONÁRIOS PENDENTES    
SELECT     DBO.USUARIO_DADOS.USUARIO_PK, DBO.USUARIO_DADOS.EMPRESA_FK, 
DBO.USUARIO_DADOS.PERFIL_FK, DBO.USUARIO_DADOS.NOME_USUARIO,     
           DBO.USUARIO_DADOS.MATRICULA, DBO.USUARIO_DADOS.CENTRO_RESULTADO, 
DBO.USUARIO_DADOS.NOME_CARGO, DBO.USUARIO_DADOS.EMAIL,     
           (SELECT TOP 1 DATA_DEMISSAO FROM DBO.USUARIO_DADOS U     
            WHERE U.CPF = DBO.USUARIO_DADOS.CPF    
            ORDER BY DATA_DEMISSAO) AS DATA_DEMISSAO,    
           DBO.USUARIO_DADOS.CPF, DBO.USUARIO_DADOS.DATA_NASC, 
DBO.USUARIO_DADOS.RG, DBO.USUARIO_DADOS.DATA_ADMISSAO,     
           DBO.USUARIO_DADOS.ENDERECO, DBO.USUARIO_DADOS.TELEFONE_COMERCIAL, 
DBO.USUARIO_DADOS.TELEFONE_CELULAR, DBO.USUARIO_DADOS.PASSAPORTE,     
           DBO.USUARIO_DADOS.IDPESSOA_SUPERIORIMEDIATO, 
DBO.USUARIO_DADOS.IDPESSOA, DBO.USUARIO_DADOS.LOGIN, DBO.USUARIO_DADOS.SENHA,   
  
           DBO.USUARIO_DADOS.ULTIMO_ACESSO, DBO.USUARIO_DADOS.NUMERO_ACESSO, 
DBO.USUARIO_DADOS.IDUSUARIO_FRAMEWORK    
FROM       DBO.AV_QUESTIONARIO INNER JOIN    
           DBO.AV_AVALIACAO ON DBO.AV_QUESTIONARIO.COD_AVALIACAO = 
DBO.AV_AVALIACAO.COD_AVALIACAO INNER JOIN    
           DBO.USUARIO_DADOS ON DBO.AV_AVALIACAO.IDPESSOA = 
DBO.USUARIO_DADOS.IDPESSOA    
WHERE     DBO.AV_QUESTIONARIO.STA_QUESTIONARIO = 1 AND     
         (DBO.AV_AVALIACAO.COD_STATUS = 1) AND     
         (DBO.AV_QUESTIONARIO.IDPESSOA IN (SELECT     
DBO.USUARIO_DADOS.IDPESSOA    
                            FROM       DBO.USUARIO_DADOS    
                            WHERE      CPF = @CPF AND IDPESSOA <> ''))    
-- USUÁRIO QUESTIONÁRIOS PENDENTES    
UNION    
-- USUÁRIOS COM STATUS “DEVOLUTIVA” E SUPERIOR ATUAL DIFERENTE     
SELECT DISTINCT U.USUARIO_PK, U.EMPRESA_FK, U.PERFIL_FK, U.NOME_USUARIO,     
           U.MATRICULA, U.CENTRO_RESULTADO, U.NOME_CARGO, U.EMAIL,     
           (SELECT TOP 1 DATA_DEMISSAO FROM DBO.USUARIO_DADOS DD     
            WHERE DD.CPF = U.CPF    
            ORDER BY DATA_DEMISSAO) AS DATA_DEMISSAO,    
           U.CPF, U.DATA_NASC, U.RG, U.DATA_ADMISSAO,     
           U.ENDERECO, U.TELEFONE_COMERCIAL, U.TELEFONE_CELULAR, U.PASSAPORTE,  
   
           U.IDPESSOA_SUPERIORIMEDIATO, U.IDPESSOA, U.LOGIN, U.SENHA,     
           U.ULTIMO_ACESSO, U.NUMERO_ACESSO, U.IDUSUARIO_FRAMEWORK    
FROM       DBO.AV_AVALIACAO A, DBO.USUARIO_DADOS U    
WHERE     A.COD_STATUS = 3 AND     
          U.CPF = A.CPF_ASSOCIADO AND     
          U.DATA_DEMISSAO IS NULL AND     
          (U.IDPESSOA_SUPERIORIMEDIATO  IN (SELECT UD.IDPESSOA    
                                           FROM  DBO.USUARIO_DADOS UD    
                                           WHERE UD.CPF = @CPF AND     
                                                 UD.DATA_DEMISSAO IS NULL AND   
  
                                                 UD.IDPESSOA <> ''))    
-- USUARIOS COM STATUS “DEVOLUTIVA” E SUPERIOR ATUAL DIFERENTE     
    
-- QUESTIONÁRIOS SUBORDINADOS    
SELECT     DBO.AV_QUESTIONARIO.COD_QUESTIONARIO, 
DBO.AV_QUESTIONARIO.COD_TIPO_QUESTIONARIO, DBO.AV_QUESTIONARIO.COD_AVALIACAO,   
  
                     DBO.AV_QUESTIONARIO.STA_QUESTIONARIO, 
DBO.AV_QUESTIONARIO.DES_PONTOS_FORTES,     
                      DBO.AV_QUESTIONARIO.DES_PONTOS_MELHORAR, 
DBO.AV_QUESTIONARIO.DES_COMENTARIO,     
                      DBO.AV_QUESTIONARIO.DAT_INICIO_PREENCHIMENTO, 
DBO.AV_QUESTIONARIO.DAT_FIM_PREENCHIMENTO,     
                      DBO.AV_QUESTIONARIO.IND_ATIVO, 
DBO.AV_QUESTIONARIO.IDPESSOA    
FROM         DBO.AV_QUESTIONARIO INNER JOIN    
             DBO.AV_AVALIACAO ON DBO.AV_QUESTIONARIO.COD_AVALIACAO = 
DBO.AV_AVALIACAO.COD_AVALIACAO    
WHERE     DBO.AV_QUESTIONARIO.COD_TIPO_QUESTIONARIO = 2 AND     
         (DBO.AV_QUESTIONARIO.IDPESSOA IN (SELECT     
DBO.USUARIO_DADOS.IDPESSOA    
                            FROM          DBO.USUARIO_DADOS    
                            WHERE      CPF = @CPF AND IDPESSOA <> ''))    
-- QUESTIONÁRIOS SUBORDINADOS    
UNION    
-- QUESTIONÁRIOS PENDENTES    
SELECT     DBO.AV_QUESTIONARIO.COD_QUESTIONARIO, 
DBO.AV_QUESTIONARIO.COD_TIPO_QUESTIONARIO, DBO.AV_QUESTIONARIO.COD_AVALIACAO,   
  
           DBO.AV_QUESTIONARIO.STA_QUESTIONARIO, 
DBO.AV_QUESTIONARIO.DES_PONTOS_FORTES,     
           DBO.AV_QUESTIONARIO.DES_PONTOS_MELHORAR, 
DBO.AV_QUESTIONARIO.DES_COMENTARIO,     
           DBO.AV_QUESTIONARIO.DAT_INICIO_PREENCHIMENTO, 
DBO.AV_QUESTIONARIO.DAT_FIM_PREENCHIMENTO,     
           DBO.AV_QUESTIONARIO.IND_ATIVO, DBO.AV_QUESTIONARIO.IDPESSOA    
FROM         DBO.AV_QUESTIONARIO INNER JOIN    
              DBO.AV_AVALIACAO ON DBO.AV_QUESTIONARIO.COD_AVALIACAO = 
DBO.AV_AVALIACAO.COD_AVALIACAO    
WHERE     (STA_QUESTIONARIO = 1) AND (DBO.AV_AVALIACAO.COD_STATUS = 1) AND     
          (DBO.AV_QUESTIONARIO.IDPESSOA IN    
                          (SELECT     DBO.USUARIO_DADOS.IDPESSOA    
                            FROM      DBO.USUARIO_DADOS    
                            WHERE     CPF = @CPF AND IDPESSOA <> ''))    
-- QUESTIONÁRIOS PENDENTES    
UNION    
-- QUESTIONÁRIOS SUBORDINADOS COM STATUS “DEVOLUTIVA” E SUPERIOR ATUAL 
DIFERENTE     
SELECT DISTINCT     
           Q.COD_QUESTIONARIO, Q.COD_TIPO_QUESTIONARIO, Q.COD_AVALIACAO,     
           Q.STA_QUESTIONARIO, Q.DES_PONTOS_FORTES,     
           Q.DES_PONTOS_MELHORAR, Q.DES_COMENTARIO,     
           Q.DAT_INICIO_PREENCHIMENTO, Q.DAT_FIM_PREENCHIMENTO,     
           Q.IND_ATIVO, Q.IDPESSOA    
FROM       DBO.AV_QUESTIONARIO Q, DBO.AV_AVALIACAO A, DBO.USUARIO_DADOS U    
WHERE     Q.COD_TIPO_QUESTIONARIO = 2 AND     
          Q.STA_QUESTIONARIO = 2 AND     
          Q.COD_AVALIACAO = A.COD_AVALIACAO AND    
          A.COD_STATUS = 3 AND     
          U.CPF = A.CPF_ASSOCIADO AND    
          U.DATA_DEMISSAO IS NULL AND     
          (U.IDPESSOA_SUPERIORIMEDIATO  IN (SELECT UD.IDPESSOA    
                                           FROM  DBO.USUARIO_DADOS UD    
                                           WHERE UD.CPF = @CPF AND     
                                                 UD.DATA_DEMISSAO IS NULL AND   
 
                                                 UD.IDPESSOA <> ''))    
-- QUESTIONÁRIOS SUBORDINADOS COM STATUS “DEVOLUTIVA” E SUPERIOR ATUAL 
DIFERENTE     
ORDER BY DBO.AV_QUESTIONARIO.COD_AVALIACAO DESC    
    
    
-- TIPO AVALIAÇÃO    
SELECT     COD_TIPO_QUESTIONARIO, DES_TIPO_QUESTIONARIO    
FROM         DBO.AV_TIPO_QUESTIONARIO    
-- TIPO AVALIAÇÃO    
    
-- EXERCÍCIO    
--SELECT     USR_CRIACAO, DAT_CRIACAO, USR_DESATIVACAO, DAT_DESATIVACAO, 
IND_ATIVO, DES_EXERCICIO, ANO_APLICACAO, ANO_INICIO    
--FROM         DBO.AV_EXERCICIO    
-- EXERCÍCIO 

GO




[As partes desta mensagem que não continham texto foram removidas]

Responder a