none
desempenho no update RRS feed

  • Pergunta

  • faço uma atualização no servidor usando update assim:                                                  UPDATE [linked].BDEMG.dbo.Saidas SET Cancelado = 1,Situacao = 'S' FROM
    [linked].BDEMG.dbo.Saidas inner join [linked].BDEMG.dbo.Cancelamento ON Cancelamento.Cod_Produto = Saidas.Cod_Produto
    WHERE (Saidas.NDocumento = Cancelamento.NDocumento) AND (Saidas.Ecf = Cancelamento.Ecf)                                                                                                                         esta atualização demora + de 6 minutos. A tabela saidas tem uns 1.650.000 registros. os campos cod_Produto e ndocumento estão indexadas. A tabela cancelamento tem 1 registro.  Já tentei UPDATE [linked].BDEMG.dbo.Saidas SET Cancelado = 1,Situacao = 'S' Where controle IN(Select controle FROM [linked].BDEMG.dbo.Saidas inner join[linked].BDEMG.dbo.Cancelamento ON Saidas.NDocumento = Cancelamento.NDocumento Where Saidas.Ecf =Cancelamento.Ecf), melhorou pouca coisa. O que posso fazer para agilizar esta atualização? OBS: sql 2005 express

    quinta-feira, 5 de julho de 2012 20:33

Respostas

  • Bom dia Marcelo,

    Uma coisa é certa... operações usando linked server tendem a prejudicar a performance (quanto envolvem tabelas com muitos registros) drasticamente. Uma das soluções é usar o OPENQUERY, que executa as transações no servidor vinculado, evitando o tráfego de rede. Outra opção é criar uma procedure no servidor vinculado com as instruções de update, no seu caso.

    At.
    Rafael

    segunda-feira, 9 de julho de 2012 12:51