¿Por qué una vista sería más rápida que un join?
¿No es una vista exactamente lo mismo?
Christian
Avalados por :
¿Por qué una vista sería más rápida que un join?
¿No es una vista exactamente lo mismo?
Christian
Crear una VISTA sin duda será más rápido que el JOIN en tiempo de ejecución creado por una instrucción SELECT. Por supuesto, los beneficios en términos de rendimiento serán evidentes si estás accediendo a un gran número de registros, de lo contrario una instrucción JOIN normal cumplirá su propósito.
Hola a todos,
No estoy seguro si las vistas son siempre más rápidas que las uniones; el tiempo de ejecución depende mucho más de la unión y la cláusula where, los índices utilizables y demás.
Pero si una tabla de base de datos está en búfer, al menos las vistas de proyección deberían hacer accesos al búfer; las uniones siempre pasarán por alto los búferes (al menos, las vistas no están excluidas en la documentación en línea de 'SELECT').
Saludos cordiales,
Christian
Desde "Diseño, Implementación y Análisis de Programas Optimizados para el Rendimiento" en service.sap.com/performance
"Con solicitudes de grupo de diferentes tablas, utiliza JOINs o VISTAS. El JOIN se codifica directamente en ABAP. Puedes adaptarlo fácilmente a los requisitos de una aplicación específica. La VISTA, sin embargo, se especifica en el DDIC, lo que impone uniformidad de definición en todo el programa. Las VISTAS, al igual que cualquier definición de tabla, pueden utilizarse en múltiples áreas del programa, reduciendo así el número de declaraciones diferentes en la caché de declaraciones.
No uses JOINs o VISTAS sobre tablas que estén almacenadas en búfer con su configuración técnica. Es posible, en principio, almacenar en búfer una VISTA, pero solo en casos raros cuando también puedas almacenar en búfer todas las tablas relacionadas. Almacenar en búfer una VISTA significa no solo una mejora de rendimiento menor, sino también un aumento significativo en la asignación de memoria y en la sobrecarga durante la sincronización del búfer. Si mezclas tablas almacenadas en búfer y no almacenadas en búfer en un acceso en lugar de leer ambos tipos de tablas, siempre perderás rendimiento porque la interfaz de base de datos no utilizará los búferes existentes.
En el entorno SAP, hay una pequeña pero significativa diferencia entre JOIN y VISTA: En tablas dependientes del cliente, cada tabla en el JOIN MANDT = SY-MANDT se genera como parte de la cláusula WHERE.
Para VISTA, sin embargo, esta cláusula WHERE se genera solo para la tabla que proporciona MANDT en la lista de proyección de la VISTA. Aunque MANDT de cada una de las tablas puede unirse a las tablas de VISTA, pueden ocurrir diferencias de procesamiento significativas en estas tablas dentro de la VISTA si MANDT también aparece en los índices de las otras tablas incluidas. Estas diferencias se deben al hecho de que los optimizadores de bases de datos solo interpretan la cláusula WHERE de la VISTA para determinar el primer acceso. Por lo tanto, debes tomar MANDT de la lista de campos de la VISTA de la tabla que proporcione el primer acceso más selectivo. Si las tablas secundarias incluyen MANDT en sus índices y no se puede determinar una tabla primaria selectiva, entonces no debes usar una VISTA. "
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute