¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Melhores práticas para atualizar múltiplos registros em uma tabela de banco de dados.

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 9 Vistas
0
Cargando...

Olá

Espero que possa me ajudar com isso.

No meu cenário, quero atualizar um campo específico de vários registros específicos em uma tabela de banco de dados. Uma opção seria usar a declaração de atualização junto com 'SET' para cada registro individual ou fazer a atualização usando 'FROM TABLE' mas sem 'SET'.

Suponho que é importante saber quantas entradas preciso atualizar. Vamos supor que preciso atualizar cerca de 50 entradas em uma tabela com quase 800.000 registros. Não é realmente uma tarefa crítica em termos de desempenho, mas ainda assim me intriga qual é a melhor opção.

Já pensei em muitos prós e contras, mas ainda não cheguei a uma conclusão. Se tivesse que atualizar uma grande quantidade de registros e vários campos, definitivamente optaria pelo 'FROM TABLE'. Sei que cada atualização causará custos adicionais de sobrecarga, mas de alguma forma acredito que o 'SET' também pode me dar uma vantagem, especialmente pela quantidade de registros que tenho.

O que você acha?

Obrigado por qualquer contribuição que você tenha!

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Acredito que aborda uma parte da pergunta, pois a pergunta é sobre desempenho.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Resultados interessantes, não totalmente inesperados.

No entanto, a menos que eu esteja perdendo algo, não aborda a pergunta do OP sobre SET vs FROM TABLE, pois ambos os testes usaram uma itab como fonte.

Segundo meu entendimento, SET deve ser significativamente mais rápido, pois o banco de dados não precisa 'receber' os dados para cada linha, já que tem apenas um valor único para aplicar a todas as linhas. Portanto, o processamento ocorre em um nível mais baixo. Mas estaria interessado em ver isso verificado em um sistema real. Posso escrever um pequeno relatório de teste se tiver tempo e ninguém mais tiver feito isso.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Aqui estão os resultados de um teste que realizei há 1,5 anos depois de ter criado uma visualização de banco de dados na tabela VBAK, com atualização habilitada , e utilizando ABAP UPDATE table ou view FROM TABLE itab. O resultado certamente seria proporcionalmente o mesmo com MODIFY.

A tabela de banco de dados VBAK possui 159 colunas, 2216 bytes de largura e 200.000 registros.

O banco de dados era ORACLE 11.2. SAP 7.40.

Criei uma visualização de banco de dados DDIC em VBAK, restrita a 8 colunas (que incluem a coluna a ser atualizada) e tem uma largura de 130 bytes. A quantidade de dados enviados ao banco de dados é reduzida consideravelmente.

Resultados: Realizei o teste 5 vezes, para atualizar as 200.000 linhas, obtive:

  • 24 segundos através da tabela de banco de dados
  • 6 segundos através da visualização

É, claro, muito interessante apenas se houver muitas atualizações.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Aqui estão os resultados de um teste que realizei há 1,5 anos depois de ter criado uma vista de banco de dados na tabela VBAK, com atualização habilitada , e usando ABAP UPDATE table ou vista DESDE a tabela itab. O resultado certamente seria a mesma proporção com MODIFY.

A tabela de banco de dados VBAK possui 159 colunas, 2216 bytes de largura, e 200.000 registros.

O banco de dados era ORACLE 11.2. SAP 7.40.

Criei uma vista de banco de dados DDIC em VBAK, restrita a 8 colunas (que incluem a coluna a ser atualizada) e tem uma largura de 130 bytes. A quantidade de dados enviados ao banco de dados é reduzida consideravelmente.

Resultados: Realizei o teste 5 vezes, para atualizar as 200.000 linhas, obtive:

  • 24 segundos através da tabela de banco de dados
  • 6 segundos através da vista

É, obviamente, muito interessante apenas se houver muitas atualizações.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?