Inquiridor
stored

Pergunta
-
Todas as Respostas
-
Compare o plano de execução dessas duas "situações" e veja se há diferença.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta. -
Coloca o código para que possamos analisar e propor soluções.
-
-
--etapa 2 Exportando tabela Tecf_01
INSERT INTO BDEMG.dbo.Saidas(Cod_Produto,Cod_Cliente,Cod_Operador,NDocumento,Data,Hora_Saida,Data_Saida,
Servico,ES,Especie,Ecf,Vr_Unitario,Quantidade,Vr_Total,Grupo,Situacao,Modelo,
Vr_Desconto_Item,Num_Serie_Ecf,Loja,Tipo,Secao,Setor,Cod_Vendedor,NU_DAV,Tributacao,
Somador,NU_Item,UN,AL_MAG,CFOP,CST,Cod_Conta,Cancelado,VR_BASE_ICMS,VR_ICMS,VR_PIS,VR_COFINS,
VR_ICM_ST,CST_Saida_PIS,CST_Saida_COFINS,VR_Liquido,Aliq_PIS,Aliq_COFINS,BC_PIS,BC_COFINS)
SELECT Cod_Produto,Cod_Cliente,Cod_Operador,NDocumento,Data,Convert(nvarchar(8),Hora_Saida,108),Data_Saida,
Servico,ES,Especie,Ecf,Vr_Unitario,Quantidade,Vr_Total,Grupo,Situacao,Modelo,
Vr_Desconto_Item,Num_Serie_Ecf,Loja,Tipo,Secao,Setor,Cod_Vendedor,NU_DAV,Tributacao,
Somador,NU_Item,UN,AL_MAG,CFOP,CST,Cod_Conta,Cancelado,VR_BASE_ICMS,VR_ICMS,VR_PIS,VR_COFINS,
VR_ICM_ST,CST_Saida_PIS,CST_Saida_COFINS,VR_Liquido,Aliq_PIS,Aliq_COFINS,BC_PIS,BC_COFINS FROM dbo.Tecf_01 WITH(NOLOCK)
WHERE Exp = 0 and Cancelado = 0
--etapa 3 Insere na tabela movimentação os produtos que serão baixados..
INSERT INTO BDEMG.dbo.Movimentacao(Cod_Produto,Quantidade,Data)
SELECT Cod_Produto, SUM(Quantidade),Data FROM dbo.Tecf_01 WITH(NOLOCK)
WHERE Exp = 0 AND Cancelado = 0 AND Situacao = 'N' AND Servico = 'N'
GROUP BY Cod_Produto,Data;
--etapa 4 Insere na tabela Cancelamento os produtos que ja foram atualizaram e posteriormente foram cancelados
INSERT INTO BDEMG.dbo.Cancelamento(NDocumento,Ecf,Data,Cod_Produto, Quantidade)
SELECT NDocumento,Ecf,Data,Cod_Produto, SUM(Quantidade)* -1 FROM dbo.Tecf_01 WITH(NOLOCK)
WHERE Exp = 0 AND Cancelado = 1 AND Situacao = 'S'
GROUP BY NDocumento,Ecf,Data,Cod_Produto;
--etapa 5 Marca que a tabela Tecf_01 foi Exportada.
UPDATE dbo.tecf_01 Set Exp = 1 WHERE Exp = 0;
--etapa 6 Exportando tabela Tecf_02...
INSERT INTO BDEMG.dbo.Receber(Cod_Cliente,NDocumento,DataDocumento,TipoCobranca,
Vencimento,Valor,Historico,DC,Cod_Operador,Loja,Ecf,Cod_Conta,Rede,Operacao)
SELECT Cod_Cliente,NDocumento,DataDocumento,TipoCobranca,
Vencimento,Valor,Historico,DC,Cod_Operador,Loja,Ecf,Cod_Conta,Rede,Operacao FROM dbo.Tecf_02 WITH(NOLOCK)
WHERE Exp = 0
--etapa 7 Marca que a tabela Tecf_02 foi Exportada.
UPDATE dbo.Tecf_02 SET Exp = 1 WHERE Exp = 0;
--etapa 8 Exportando tabela Tecf_03
INSERT INTO BDEMG.dbo.caixa(NDocumento,Ecf,Data,Hora,Vencimento,Especie,Operacao,Valor,St,Cx,
Cod_Cliente,Cod_Operador,Rede,Loja,Cod_Conta,NU_DAV)
SELECT NDocumento,Ecf,Data,Convert(nvarchar(8),Hora,108),Vencimento,Especie,Operacao,Valor,St,Cx,
Cod_Cliente,Cod_Operador,Rede,Loja,Cod_Conta,NU_DAV FROM dbo.Tecf_03 WITH(NOLOCK)
WHERE Exp = 0
--etapa 9 Marca que a tabela Tecf_03 foi Exportada.
UPDATE dbo.Tecf_03 SET Exp = 1 WHERE Exp = 0;
--etapa 10 Exportando tabela Tecf_04...
INSERT INTO BDEMG.dbo.Recebidas(Cod_Cliente,N_Doc_Compra,D_Doc_Compra,TipoCobranca,Vencimento,
Valor,Historico,Pago,D_Pagamento,DC,Cod_Operador,Ecf,Loja,Cod_Conta)
SELECT Cod_Cliente,N_Doc_Compra,D_Doc_Compra,TipoCobranca,Vencimento,
Valor,Historico,Pago,D_Pagamento,DC,Cod_Operador,Ecf,Loja,Cod_Conta FROM dbo.Tecf_04 WITH(NOLOCK)
WHERE Exp = 0
--etapa 11 Marca que a tabela Tecf_04 foi Exportada.
UPDATE dbo.Tecf_04 SET Exp = 1 WHERE Exp = 0;
--etapa 14 Exportando tabela Reg_T_60...
INSERT INTO BDEMG.dbo.Reg_T_60(Data,ECF,NSerieECF,ModeloDoc,CooInicial,CooFinal,
Ncrz,N_cro,G_Total,Venda_Bruta,Aliquota,ValorTotalizador,ES,Especie,ValorICMS,DC,Loja)
SELECT Data,ECF,NSerieECF,ModeloDoc,CooInicial,CooFinal,
Ncrz,N_cro,G_Total,Venda_Bruta,Aliquota,ValorTotalizador,ES,
Especie,ValorICMS,DC,Loja FROM dbo.Reg_T_60 WITH(NOLOCK)
WHERE Exp = 0
--etapa 15 Marca que a tabela Reg_T_60 foi Exportada.
UPDATE Reg_T_60 SET Exp = 1 WHERE Exp = 0;
--etapa 16 Chama stored no servidor
EXECUTE BDEMG.dbo.Atualiza_DB_Server
@PagaComissao = 0,
@SVData_Est = '28/08/2012',
@SVHora_Est = '15:00:00' -
na realidade a stored acima usa condição if rede = 0 ela faz todo o processo local else faz o processo usando linked. Fazendo uns teste aqui, percebi que deixando so uma condição ficou rapido. O que acontece, a condição if faz atrasar o processo?