none
Melhorar Query RRS feed

  • Pergunta

  • Pessoal, tenho a seguinte query abaixo, e está leeenta demais.. gostaria de sugestões para melhorar.

     

    Declare @central as int
    Declare @dt_inicio as smalldatetime
    Declare @dt_fim as smalldatetime


    Set @central = 21

    Set @dt_inicio = '2006-09-01'

    Set @dt_fim = '2006-09-30'


    select Count(*),Sum(duracao)/60 from ligacoes_particoes where right(nrdiscado,8)

     in

    (select faixa from voip_numeros where pkcdcentral in (14) )

    and pkcdcentral = @central and dtligacao Between @dt_inicio and @dt_fim and sigla <> 'ENT'

    and duracao > 10 and Len(nrdiscado) <= 13

    and pkcdrota not in (select pkcdrota from voip_rota where pkcdcentral = @central)

     

    Abraço,

     

    terça-feira, 21 de novembro de 2006 13:31

Todas as Respostas

  • Paulo,

    Você esta utilizando sub-querys, acredito que se você trabalhar com Joins poderia ajudar.

    terça-feira, 21 de novembro de 2006 13:35
  • Paulo, bom dia!

    Sem saber volume de dados, nem a configuração das tuas tabelas, fica difícil te ajudar diretamente na query.

    Mas como dica geral, para todas tuas queries: verifique a normalização das tabelas, verifique os índices disponíveis nas tabelas envolvidas (e veja se os está utilizando efetivamente!!) e veja possibilidades de utilizar joins ao invés de subqueries e das cláusulas IN.

    Rode o Execution Plan e veja o que ele te diz! Leia mais no Books Online (Execution Plan).

    Um abraço,

    Raul Santos.

     

    sexta-feira, 24 de novembro de 2006 13:43
  • OK Raul, vou verificar estes detalhes. Muito Obrigado pela ajuda!
    segunda-feira, 27 de novembro de 2006 11:59