Avalados por :

Melhorando o desempenho em uma seleção: Visualização de banco de dados ou JOIN?

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

Prezados especialistas,

Qual é a melhor maneira de melhorar o desempenho em uma seleção, VIEW (criando uma visualização de banco de dados) ou JOIN (unindo as tabelas do banco de dados)?

Obrigado,

Bala

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

4 Respuestas

0
Cargando...

Por que uma visualização seria mais rápida do que um join?

Não é uma visualização exatamente a mesma coisa?

Christian

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

Criar uma VIEW certamente será mais rápido do que o JOIN em tempo de execução criado por uma instrução SELECT. Claro, os benefícios em termos de desempenho serão evidentes se estiver acessando um grande número de registros, caso contrário, uma instrução JOIN normal cumprirá seu propósito.

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

Olá a todos,

Não tenho certeza se as visualizações são sempre mais rápidas do que as junções; o tempo de execução depende muito mais da junção e da cláusula where, dos índices utilizados e outros.

Mas se uma tabela de banco de dados estiver em buffer, pelo menos as visualizações de projeção devem acessar o buffer; as junções sempre ignorarão os buffers (pelo menos, as visualizações não são excluídas na documentação online do 'SELECT').

Atenciosamente,

Christian

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

A partir de "Design, Implementação e Análise de Programas Otimizados para Desempenho" em service.sap.com/performance

"Com solicitações de grupo de diferentes tabelas, utilize JOINs ou VISTAS. O JOIN é codificado diretamente em ABAP. Você pode facilmente adaptá-lo aos requisitos de uma aplicação específica. A VISTA, no entanto, é especificada no DDIC, impondo uniformidade de definição em todo o programa. As VISTAS, assim como qualquer definição de tabela, podem ser usadas em várias áreas do programa, reduzindo o número de declarações diferentes no cache de declarações.

Não use JOINs ou VISTAS em tabelas armazenadas em buffer com sua configuração técnica. Em princípio, é possível armazenar uma VISTA em buffer, mas apenas em casos raros quando também for possível armazenar em buffer todas as tabelas relacionadas. Armazenar uma VISTA em buffer significa não apenas uma melhoria de desempenho menor, mas também um aumento significativo na alocação de memória e na sobrecarga durante a sincronização do buffer. Se você misturar tabelas armazenadas em buffer e não armazenadas em buffer em um acesso em vez de ler ambos os tipos de tabelas, sempre perderá desempenho porque a interface de banco de dados não usará os buffers existentes.

No ambiente SAP, há uma diferença pequena, mas significativa, entre JOIN e VISTA: em tabelas dependentes do cliente, cada tabela no JOIN MANDT = SY-MANDT é gerada como parte da cláusula WHERE.

Para a VISTA, no entanto, essa cláusula WHERE é gerada apenas para a tabela que fornece MANDT na lista de projeção da VISTA. Embora MANDT de cada uma das tabelas possa ser unido às tabelas de VISTA, podem ocorrer diferenças de processamento significativas nessas tabelas dentro da VISTA se MANDT também aparecer nos índices das outras tabelas incluídas. Essas diferenças ocorrem porque os otimizadores de banco de dados interpretam apenas a cláusula WHERE da VISTA para determinar o primeiro acesso. Portanto, você deve selecionar MANDT da lista de campos da VISTA da tabela que fornece o acesso mais seletivo. Se as tabelas secundárias incluírem MANDT em seus índices e não for possível determinar uma tabela primária seletiva, então você não deve usar uma VISTA. "

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?