none
Otimização de uma consulta sql RRS feed

  • Pergunta

  • Olá Pessoal,

    Estou com seguinte dificuldade pra seguinte caso: Existe uma tabela temporária chamada @carteira, e uma tabela tb_movimentacao. Existe uma seguinte consulta

    OR EXISTS (
    SELECT 1
    FROM @carteira c
    WHERE c.codigo = mov.IdCarteiraExcecao
    				)

     Esta consulta esta lenta gostaria de otimizar. ela esta dentro de um procedure realizando uma condição. mov.cateiraExcecao retorna uma lista de idCarteira.

    terça-feira, 16 de agosto de 2016 18:52

Respostas

Todas as Respostas

  • Olá Manoel,

    Poste sua query completa. Uma parte apenas, fica difícil de analisar.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    terça-feira, 16 de agosto de 2016 18:57
  • Deleted
    • Marcado como Resposta Manoel Neto MSYS sexta-feira, 19 de agosto de 2016 16:57
    terça-feira, 16 de agosto de 2016 21:15
  • Ola José Diz,

    Não a tabela @carteira não tem chave primaria, mais recebe seguinte INSERT

    DECLARE @carteira TABLE (codigo NUMERIC(5) NULL)
    
    
    SELECT @query_carteira = ' select tc.codigo from tb_carteira
    
    INSERT INTO @carteira
    EXECUTE (@query_carteira) 

    Mais ele recebe codigo tb_carteira, que pode ser nulo. 

    Em relação a tb_movimentação ela participa no indice pk-tb_movimentação, IdCarteiraExcecao pode ser nulo.

    O problema e que demora muito a consulta. 

    quarta-feira, 17 de agosto de 2016 12:36
  • cara verifique se existe índices nas tabelas relacionadas este pode ser o problema 
    quarta-feira, 17 de agosto de 2016 14:58
  • Deleted
    • Marcado como Resposta Manoel Neto MSYS sexta-feira, 19 de agosto de 2016 16:57
    quarta-feira, 17 de agosto de 2016 21:52
  • Manoel,

    Procure entender que a tabela temporária é uma tabela normal.

    Com isso, utilize o INNER JOIN, LEFT JOING e tudo mais.

    Tente colocar todo o select para ficar melhor te ajudar por favor.


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    • Marcado como Resposta Manoel Neto MSYS sexta-feira, 19 de agosto de 2016 16:57
    • Não Marcado como Resposta Manoel Neto MSYS sexta-feira, 19 de agosto de 2016 16:57
    quarta-feira, 17 de agosto de 2016 23:48
  • Manoel,

    Concordo com as observações do Mauricio!!!

    Uma das primeiras boas práticas que devemos adotar é o uso de algum tipo de mecamismo de controle, organização e indexação dos nossos dados, neste caso, a boa e velha chave primária é o primeiro passo a ser executado, ou seja, realizar a criação da mesma pode ser uma forma de melhorarmos os processos básicos de um CRUD.

    Mas fiquei curioso e gostaria de saber melhor sobre as suas necessidades, para quem sabe tentarmos encontrar outras soluções.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 18 de agosto de 2016 00:15