¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo mejorar el rendimiento de una consulta SQL compleja: Consejos y mejores prácticas

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

¿Puede alguien guiarme sobre cómo escribir la siguiente consulta para lograr un mejor rendimiento? ¿Puedo usarla para todas las entradas o debo dividirla?

Por favor, déjenme saber sus opiniones.

SELECT DISTINCT werks matnr b~stlal idnrk postp d~aennr
            sortf potx1 c~lkenz b~stlty stlst
            INTO TABLE ltab_one
            FROM mast AS a INNER JOIN stko AS b
            ON a~stlnr = b~stlnr
            AND a~stlal = b~stlal
            INNER JOIN stas AS c
            ON b~stlnr = c~stlnr
            AND b~stlal = c~stlal
            AND b~stlty = c~stlty
            INNER JOIN stpo AS d
            ON c~stlnr = d~stlnr
            AND c~stlkn = d~stlkn
            AND c~stlty = d~stlty
            WHERE a~werks IN s_werks
            AND ( ( d~andat IN s_datum
            OR d~aedat IN s_datum
            OR a~andat IN s_datum
            OR a~aedat IN s_datum
            OR b~andat IN s_datum
            OR b~aedat IN s_datum
            OR c~andat IN s_datum
            OR c~aedat IN s_datum
            ) AND d~datuv >= lv_effdt )
            AND a~stlan = '1'
            AND matnr IN s_matnr.
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Siva,

El inner join se basa en los campos clave, en el MAST Matnr, Stlnnr es una combinación de campos clave pero para las tablas STPO, STKO, STAS los campos clave son diferentes. Para un material, contendrá más registros si se utiliza este inner join.

Primero obtén los datos de la tabla MAST, basado en eso usa la FM CSAP_MAT_BOM_READ para obtener

todos los detalles del BOM.

Lo usé en el informe para obtener los detalles del BOM.

Saludos,

Madhavi

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

El rendimiento de la consulta SELECT depende principalmente de la cláusula WHERE.

Y DISTINCT en SELECT no es mejor que obtener los datos en una tabla interna y luego ordenar la tabla interna y eliminar duplicados adyacentes.

Espero que hayas entendido mi punto.

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

        WHERE a~werks IN s_werks
        AND ( ( d~andat IN s_datum
            OR d~aedat IN s_datum
            OR a~andat IN s_datum
            OR a~aedat IN s_datum
            OR b~andat IN s_datum
            OR b~aedat IN s_datum
            OR c~andat IN s_datum
            OR c~aedat IN s_datum
            ) AND d~datuv >= lv_effdt )
        AND a~stlan = '1'
        AND matnr IN s_matnr.
    

This part determines your performance, not the DISTINCT and not the joins.

What is in s_werks, s-datum, s_matnr typically? I guess there are better and worse conditions.

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

El rendimiento de la consulta select depende principalmente de la cláusula where.

Y usar distinct en select no es mejor que obtener los datos en una tabla interna, ordenar la tabla interna y eliminar duplicados adyacentes.

Espero que hayas entendido mi punto.

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?