Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jerfeson

SubQuery (SubConsultas) em inner Join

Recommended Posts

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 ! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.