consulta gerando sobrecarga de CPU no servidor
Prezados,
Alguém saberia dizer porque esta consulta ocupa 100% de CPU no servidor?
select distinct codfilial,NUMEROMOV,dataemissao,DATALANCAMENTO,CODTMV,CODIGOREDUZIDO,
DESCRICAO,NUMEROCCF,descontoitem,acrescimoitem,descontoNota,acrescimoNota, SITTRIBUTARIAPIS,basePIS,baseCofins,
SITTRIBUTARIACOFINS,CODNAT,DESCRICAOCOMPLETA
,sum(vtotalvendaitem) as vtotalvendaitem
into saidas_alexandre
from (
select distinct tm.codfilial,tm.NUMEROMOV,tm.dataemissao,tm.DATALANCAMENTO,tm.CODTMV,tp.CODIGOREDUZIDO,
tp.DESCRICAO,tp.NUMEROCCF,TTM.valordesc as descontoitem,TTM.valordesp as acrescimoitem,tm.VALORDESC as descontoNota
,tm.VALORDESP as acrescimoNota
,(ttm.QUANTIDADE * ttm.PRECOUNITARIO)
- case when ttm.VALORDESC is null then 0 else ttm.VALORDESC end
+ case when ttm.VALORdesp is null then 0 else ttm.VALORDESP end
as vtotalvendaitem
,(select BASEDECALCULO from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'pis') as basePIS
,(select SITTRIBUTARIA from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'pis') as sittributariaPIS
,(select valor from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'pis') as valorPis
,(select BASEDECALCULO from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'cofins') as baseCofins
,(select SITTRIBUTARIA from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'cofins') as sittributariaCOFINS
,(select VALOR from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'cofins') as valorCofins
,d.CODNAT,d.DESCRICAOCOMPLETA
from TMOV tm
inner join TITMMOV ttm on (ttm.IDMOV = tm.IDMOV)
inner join TPRD tp on (tp.IDPRD = ttm.IDPRD)
inner join TPRDFISCAL tpf on (tpf.IDPRD = tp.idprd)
inner join DNATUREZA d on (d.IDNAT = ttm.IDNAT)
left join TTRBMOV ttb on (ttb.IDMOV = ttm.IDMOV and ttb.NSEQITMMOV = ttm.NSEQITMMOV)
where
tm.DATALANCAMENTO >= '01/01/2013'
and tm.datalancamento <= '31/01/2013'
and tm.STATUS <> 'C' and (d.CODnat like '5%' or d.CODNAT like '6%')
)T1
group by
codfilial,NUMEROMOV,dataemissao,DATALANCAMENTO,CODTMV,CODIGOREDUZIDO,
DESCRICAO,NUMEROCCF,descontoitem,acrescimoitem,descontoNota,acrescimoNota, SITTRIBUTARIAPIS,basePIS,baseCofins,
SITTRIBUTARIACOFINS,CODNAT,DESCRICAOCOMPLETA
order by DATALANCAMENTO, NUMEROMOV
Alguém saberia dizer porque esta consulta ocupa 100% de CPU no servidor?
select distinct codfilial,NUMEROMOV,dataemissao,DATALANCAMENTO,CODTMV,CODIGOREDUZIDO,
DESCRICAO,NUMEROCCF,descontoitem,acrescimoitem,descontoNota,acrescimoNota, SITTRIBUTARIAPIS,basePIS,baseCofins,
SITTRIBUTARIACOFINS,CODNAT,DESCRICAOCOMPLETA
,sum(vtotalvendaitem) as vtotalvendaitem
into saidas_alexandre
from (
select distinct tm.codfilial,tm.NUMEROMOV,tm.dataemissao,tm.DATALANCAMENTO,tm.CODTMV,tp.CODIGOREDUZIDO,
tp.DESCRICAO,tp.NUMEROCCF,TTM.valordesc as descontoitem,TTM.valordesp as acrescimoitem,tm.VALORDESC as descontoNota
,tm.VALORDESP as acrescimoNota
,(ttm.QUANTIDADE * ttm.PRECOUNITARIO)
- case when ttm.VALORDESC is null then 0 else ttm.VALORDESC end
+ case when ttm.VALORdesp is null then 0 else ttm.VALORDESP end
as vtotalvendaitem
,(select BASEDECALCULO from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'pis') as basePIS
,(select SITTRIBUTARIA from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'pis') as sittributariaPIS
,(select valor from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'pis') as valorPis
,(select BASEDECALCULO from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'cofins') as baseCofins
,(select SITTRIBUTARIA from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'cofins') as sittributariaCOFINS
,(select VALOR from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'cofins') as valorCofins
,d.CODNAT,d.DESCRICAOCOMPLETA
from TMOV tm
inner join TITMMOV ttm on (ttm.IDMOV = tm.IDMOV)
inner join TPRD tp on (tp.IDPRD = ttm.IDPRD)
inner join TPRDFISCAL tpf on (tpf.IDPRD = tp.idprd)
inner join DNATUREZA d on (d.IDNAT = ttm.IDNAT)
left join TTRBMOV ttb on (ttb.IDMOV = ttm.IDMOV and ttb.NSEQITMMOV = ttm.NSEQITMMOV)
where
tm.DATALANCAMENTO >= '01/01/2013'
and tm.datalancamento <= '31/01/2013'
and tm.STATUS <> 'C' and (d.CODnat like '5%' or d.CODNAT like '6%')
)T1
group by
codfilial,NUMEROMOV,dataemissao,DATALANCAMENTO,CODTMV,CODIGOREDUZIDO,
DESCRICAO,NUMEROCCF,descontoitem,acrescimoitem,descontoNota,acrescimoNota, SITTRIBUTARIAPIS,basePIS,baseCofins,
SITTRIBUTARIACOFINS,CODNAT,DESCRICAOCOMPLETA
order by DATALANCAMENTO, NUMEROMOV
Victor Pavia
Curtidas 0
Respostas
Cesar Roniglei
22/02/2013
Posso te dar um help sim, cadastra meu msn: cesaronig@hotmail.com
GOSTEI 0
Joel Rodrigues
22/02/2013
Pessoal, se puderem compartilhar conosco a solução, seria bastante interessante, para que outras pessoas possam consultar esse tópico futuramente.
Abraço.
Abraço.
GOSTEI 0
Marcelo Costa
22/02/2013
Victor, boa noite.
Como você costuma analisar a execução? Tem o hábito de visualizar o plano de execução da consulta?
Minhas análises de desempenho sigo muito pelo plano de execução para ajudar a entender onde pode estar o gargalo.
Dependendo de como faz para analisar, se quiser, posto aqui um passo a passo de como costumo fazer para analisar desempenho e aplicar melhorias de performance.
Abs.
Como você costuma analisar a execução? Tem o hábito de visualizar o plano de execução da consulta?
Minhas análises de desempenho sigo muito pelo plano de execução para ajudar a entender onde pode estar o gargalo.
Dependendo de como faz para analisar, se quiser, posto aqui um passo a passo de como costumo fazer para analisar desempenho e aplicar melhorias de performance.
Abs.
GOSTEI 0
Marcelo Costa
22/02/2013
Rodei sua query aqui em minha base de testes e foi sugerido a criação de índice envolvendo a TMOV.
Se ainda estiver precisando de ajuda, me fale como retorna o resultado do seu plano de execução.
Abs
Se ainda estiver precisando de ajuda, me fale como retorna o resultado do seu plano de execução.
Abs
GOSTEI 0
Alex Lekao
22/02/2013
Oi Marcelo, bom dia!!!
Já obtive bastante resultado usando o plano de execução tbm, infelizmente não consigo entender muito bem os símbolos e utilidade mais detalhada do mesmo.
Eu gostaria sim de um passo a passo de utilização dele.
Já me passaram algo antes mas não ajudou muito, não consegui entender bem tbm.
Obrigado.
Abraco.
Alex - Lekao
Já obtive bastante resultado usando o plano de execução tbm, infelizmente não consigo entender muito bem os símbolos e utilidade mais detalhada do mesmo.
Eu gostaria sim de um passo a passo de utilização dele.
Já me passaram algo antes mas não ajudou muito, não consegui entender bem tbm.
Obrigado.
Abraco.
Alex - Lekao
GOSTEI 0
José
22/02/2013
Olá amigo, como estamos em relação a duvida inicial, podemos dar o tópico por concluído ?
GOSTEI 0