Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, estou com uma dúvida é possivel em um UPDATE, para melhorar o desempenho tranformar o SELECT em um INNER JOIN, se possivel como ficaria no script abaixo ?
UPDATE TBPedidoCertidao SET boPEDVisto = 0
WHERE nuPEDProtocolo IN
(
SELECT DISTINCT dc.nuDCTProtocolo FROM TBDetalheCertidao dc WHERE 1=1
AND (dtDCTDataMovimento BETWEEN
CONVERT(DATETIME,' &dataInicial& 00:00:00',103) AND
CONVERT(DATETIME,' &dataInicial& 23:59:59',103))
AND nuDCTNumeroRemessa = &numRemessa&
)
Desde já agradeço aos caros colaboradores ! :)
Sql Server tem "update cruzado" , veja se exemplo acima ajuda.
Para que este 1=1 ?
Será que poderia ser mais especifico em relação a sua resposta ?
Sobre o 1=1 acredite eu também não faço ideia, estou dando uporte a esse código e não sei bem o que ele faz. mas é so com ele que funciona então mantenho
Será que poderia ser mais especifico em relação a sua resposta ?
Não, como o Oracle não tem esta síntaxe eu não a uso, mas basicamente é a regra do jion aplicada ao update.
>
Não, como o Oracle não tem esta síntaxe eu não a uso, mas basicamente é a regra do jion aplicada ao update.
Eu usei a seguinte estrutura para resolver o problema .
" UPDATE TBPedidoCertidao " &_
" SET boPEDVisto = 0 " &_
" FROM TBPedidoCertidao " &_
" INNER JOIN TBDetalheCertidao on nuPEDProtocolo = nuDCTProtocolo " &_
" WHERE 1=1 " &_
" AND (dtDCTDataMovimento BETWEEN CONVERT(DATETIME,'" &dataInicial& " 00:00:00',103) " &_
" AND CONVERT(DATETIME,'" &dataInicial& " 23:59:59',103)) " &_
" AND nuDCTNumeroRemessa = " &numRemessa& " "
entretanto não deixou o update mais rápido =\ acho que possivelmente seja o servidor - mesmo assim agradeço pela atenção
A tabela tem índices?
Vc fez o Plano de Execução da query ?
Em geral o uso de functions (como convert) mata o índice
Tire este 1=1, não serve para nada, deve ser sobra de algum debug.
http://social.msdn.microsoft.com/Forums/pt-BR/0740be7a-668a-4ff9-862e-0acc5d81185b/atualizar-campo-de-uma-tabela-de-acordo-com-outra-usando-se-campoid-da-tborigem-campoid-da?forum=transactsqlpt
Sql Server tem "update cruzado" , veja se exemplo acima ajuda.
Para que este 1=1 ?