|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
tiagorogers1 Aprendiz
Registrado: Sexta-Feira, 17 de Julho de 2015 Mensagens: 215 Localização: Recife
|
Enviada: Seg Mar 27, 2017 9:53 pm Assunto: Melhorar query no Sql Server |
|
|
tenho a seguinte query Código: | select
produto,descricao,estoque_calculado,REFERENCIA,custo_bruto,custo_liquido,IPI_compra,frete,outras,ult_compra,
DESP_FINAN,CTFIXO,REF_ORIGINAL,NCM,
OUTRAS_C,MARCA_ID,FORNE_ID, ATIVO, abc,
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]
from
(
select MONTH(DATA) as MES,i.Quantidade,i.produto,i.descricao,e.estoque_calculado,
L.REFERENCIA, L.custo_bruto,L.custo_liquido, L.IPI_compra,
L.frete,L.outras,L.ult_compra,L.DESP_FINAN,L.CTFIXO,L.REF_ORIGINAL,L.NCM,
L.OUTRAS_C, L.MARCA_ID, L.FORNE_ID, L.ATIVO, L.abc
from ITENS_PED_ORCAMENTO I
INNER JOIN ESTOQUE_ATUAL E
ON I.produto = E.ESTOQUE_ID
INNER JOIN estoque L
ON i.PRODUTO = L.ESTOQUE_ID
where
i.DATA between '2017-01-01' and '2017-03-31' and
i.ABERTO = 'NAO'
) as t
pivot
(
sum(Quantidade) for MES in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12] )
) as p |
são poucos registros, menos de 2 mil mas demorou quase 2 minutos, tem como melhorar esse select ? acredito que foi o join com as tabelas Estoque e estoque_atual que são responsáveis por esse aumento |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Mar 28, 2017 9:32 am Assunto: |
|
|
Bom dia,
Experimente fazer primeiro o Pivot, deixando os Joins para o final, para ver se melhora o desempenho:
Código: | with CTE_Pivot as
(
select
produto, descricao, [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]
from
(
select MONTH(DATA) as MES, i.Quantidade, i.produto, i.descricao,
from ITENS_PED_ORCAMENTO I
where
i.DATA between '2017-01-01' and '2017-03-31' and
i.ABERTO = 'NAO'
) as t
pivot
(
sum(Quantidade) for MES in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12] )
) as p
)
select
c.produto, c.descricao,
e.estoque_calculado,
L.REFERENCIA, L.custo_bruto, L.custo_liquido, L.IPI_compra,
L.frete, L.outras, L.ult_compra, L.DESP_FINAN, L.CTFIXO, L.REF_ORIGINAL, L.NCM,
L.OUTRAS_C, L.MARCA_ID, L.FORNE_ID, L.ATIVO, L.abc,
c.[1],c.[2],c.[3],c.[4],c.[5],c.[6],c.[7],c.[8],c.[9],c.[10],c.[11],c.[12]
from CTE_Pivot as c
INNER JOIN ESTOQUE_ATUAL E
ON c.produto = E.ESTOQUE_ID
INNER JOIN estoque L
ON c.PRODUTO = L.ESTOQUE_ID
|
Espero que ajude
_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos!gopouva-residencial-apartamento |
|
Voltar ao Topo |
|
|
tiagorogers1 Aprendiz
Registrado: Sexta-Feira, 17 de Julho de 2015 Mensagens: 215 Localização: Recife
|
Enviada: Ter Mar 28, 2017 10:08 am Assunto: |
|
|
Obrigado IMEx reduziu pra 19 segundos, |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|