ayuda con rutina para mejorar tiempo de busquedas

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • minerva0112
    Senior Member
    • nov
    • 116

    #1

    ayuda con rutina para mejorar tiempo de busquedas

    Hola, tengo un reporte que refleja una cantidad de datos significativos, la rutina que se utiliza para realizar unas de las busquedas tarda mucho tiempo y da un error de tiempo de ejecucion.

    please que podria mejorar en el siguiente codigo:


    SELECT t1~belnr t1~gjahr t2~buzei t2~bschl t2~nplnr t2~projk t2~dmbtr t2~lifnr t1~budat
    INTO TABLE it_bseg_reem
    FROM zbkpf_73 AS t1
    INNER JOIN zbseg_73 AS t2
    ON t1~bukrs EQ t2~bukrs
    AND t1~belnr EQ t2~belnr
    AND t1~gjahr EQ t2~gjahr
    FOR ALL ENTRIES IN it_aufk
    WHERE t1~bukrs EQ bukrs
    AND t1~blart EQ 'JE'
    AND t1~stblg EQ ' '
    AND t1~xstov NE 'X'
    AND t1~budat LE s_budat
    AND t2~nplnr EQ it_aufk-aufnr.

    gracias
  • Neo_25
    Member
    • jun
    • 51

    #2
    Buenas,
    a ver si te puedo ayudar.

    Porqué no separas la select principal del for all entries.


    SELECT t1~belnr t1~gjahr t2~buzei t2~bschl t2~nplnr t2~projk t2~dmbtr t2~lifnr t1~budat
    INTO TABLE it_bseg_reem
    FROM zbkpf_73 AS t1
    INNER JOIN zbseg_73 AS t2
    ON t1~bukrs EQ t2~bukrs
    AND t1~belnr EQ t2~belnr
    AND t1~gjahr EQ t2~gjahr
    WHERE t1~bukrs EQ bukrs
    AND t1~blart EQ 'JE'
    AND t1~stblg EQ ' '
    AND t1~xstov NE 'X'
    AND t1~budat LE s_budat.

    FIELD-SYMBOLS: <fs_bseg_reem> TYPE xxxx.
    DATA: lw_aufk TYPE yyyy. "estructura

    LOOP AT it_bseg_reem ASSIGNING <fs_bseg_reem>.
    READ TABLE it_aufk INTO lw_aufk
    WITH KEY aufnr = <fs_bseg_reem>-nplnr.
    IF sy-subrc = 0.
    APPEND lw_aufk TO it_bseg_reem_2.
    ENDIF.
    ENDLOOP.

    Comentario

    • VLozano
      Senior Member
      • nov
      • 124

      #3
      Cito el mensaje original para que no se pierda...
      Originalmente publicado por minerva0112
      Hola, tengo un reporte que refleja una cantidad de datos significativos, la rutina que se utiliza para realizar unas de las busquedas tarda mucho tiempo y da un error de tiempo de ejecucion.

      please que podria mejorar en el siguiente codigo:
      Código:
      SELECT t1~belnr t1~gjahr t2~buzei t2~bschl t2~nplnr t2~projk t2~dmbtr t2~lifnr t1~budat
        INTO   TABLE it_bseg_reem
        FROM   zbkpf_73 AS t1
        INNER  JOIN zbseg_73 AS t2
        ON     t1~bukrs EQ t2~bukrs
        AND    t1~belnr EQ t2~belnr
        AND    t1~gjahr EQ t2~gjahr
        FOR    ALL ENTRIES IN it_aufk
        WHERE  t1~bukrs EQ bukrs
        AND    t1~blart EQ 'JE'
        AND    t1~stblg EQ ' '
        AND    t1~xstov NE 'X'
        AND    t1~budat LE s_budat
        AND    t2~nplnr EQ it_aufk-aufnr.
      gracias
      Dos cosillas (o tres, nunca sé cuántas acabo poniendo):
      - ¿cuántos registros tienen esas Z?
      - ¿los campos que utilizas en el join son clave?
      - "EQ" mola mucho, pero es menos eficiente que "="... en serio, lo leí en alguna parte
      - asegúrate ANTES de lanzar la SQL que la tabla it_aufk tiene registros, o el sistema te leerá TODO el contenido de ambas tablas de la JOIN, independientemente de lo que tenga el WHERE...
      - ¿los campos del where están indexados?

      Si se me ocurre algo más, ya me pasaré por aquí

      (braschilester, creo que te has equivocado de hilo)
      "Porque algunos sabemos que somos parte del problema"
      - Pequeña guía para escribir mensajes en foros técnicos -

      Comentario

      • minerva0112
        Senior Member
        • nov
        • 116

        #4
        gracias por su ayuda, pero surgio la idea de crear una vista con estas dos tablas y los tiempos mejoraron muchisimo

        Comentario

        Trabajando...