Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luizcamus

agilizar consulta

Recommended Posts

Pessoal, estou fazendo uma consulta ( sql abaixo) que demora bastante tempo para retornar. Há milhares de registros no BD. Gostaria de saber se teria como agilizar a consulta. Obrigado.

SELECT sNA, sData,iOpcao FROM CN_DetalhesChamada WHERE sData BETWEEN '$datai' AND '$dataf'AND iCodigoEmpresa = '$codempresa'AND iOpcao = -7AND idLigacao NOT IN(SELECT idLigacao FROM CN_DetalhesChamadaWHERE sData BETWEEN '$datai' AND '$dataf'AND iCodigoEmpresa = '$codempresa'AND iOpcao = -9)ORDER BY sData

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu amigo, a princípio o select está legal... eu apenas incluiria as cláusulas NOLOCK, veja a seguir:

SELECT sNA, sData,iOpcao   FROM CN_DetalhesChamada WITH (NOLOCK) WHERE sData BETWEEN '$datai' AND '$dataf'   AND iCodigoEmpresa = '$codempresa'   AND iOpcao = -7   AND idLigacao NOT IN (SELECT idLigacao                            FROM CN_DetalhesChamada WITH (NOLOCK)                          WHERE sData BETWEEN '$datai' AND '$dataf'                            AND iCodigoEmpresa = '$codempresa'                            AND iOpcao = -9)ORDER BY sData

Se isso não melhorar, eu tentaria criar uma tabela temporária e substituiria o segundo SELECT (do not in) pelo SELECT na tabela temporária. A seguir:

SELECT idLigacao     INTO #TMP   FROM CN_DetalhesChamada WITH (NOLOCK) WHERE sData BETWEEN '$datai' AND '$dataf'     AND iCodigoEmpresa = '$codempresa'     AND iOpcao = -9SELECT sNA, sData,iOpcao   FROM CN_DetalhesChamada WITH (NOLOCK) WHERE sData BETWEEN '$datai' AND '$dataf'   AND iCodigoEmpresa = '$codempresa'   AND iOpcao = -7   AND idLigacao NOT IN (SELECT idLigacao                                          FROM #TMP)

ISSO AÍ!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Buees, me diga porque criar uma tabela temporária, neste caso, iria agilizar o processo. Sou leigo ainda. Mas pelo o que entendi todos os dados da tabela iriam para outra e a parte do comando depois do NOT IN faria uma consulta nessa tabela temporária. Duas consultas da mesma maneira. Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.