uba_heraeus Sabes, no es tan importante responder a respuestas antiguas de alguien está equivocado en internet 😉
Avalados por :
Hola Gurus,
Tengo algunas consultas sobre tablas ordenadas
tengo una tabla interna ordenada,
itab_sortd tipo tabla ordenada con clave no única MATNR WERKS.
Loop en itab_sortd en wa_srtd donde matnr = 'xxxx'.
.....
Endloop.
Si uso ambas claves en la declaración where puedo lograr una búsqueda binaria.
1. pero ¿qué pasa si no estoy usando toda la clave? ¿Aún hará una búsqueda binaria al usar la parte más a la izquierda de la clave?
He leído que si usas la parte más a la izquierda de la clave, podemos lograr una búsqueda binaria en tablas ordenadas.
2. También ¿qué pasa con el loop con todos los campos clave + campos adicionales?
por ejemplo
itab_sortd tipo tabla ordenada con clave no única MATNR WERKS.
Loop en itab_sortd en wa_srtd donde MATNR = 'xxxx' WERKS= 'yyyy' PSTNK = 'zzzz'.
.....
Endloop
3.
itab_sortd tipo tabla ordenada con clave no única MATNR WERKS.
LEER TABLA itab_sortd CON CLAVE matnr = 'XXXX'.
¿La declaración anterior resultará en una búsqueda binaria?
Gracias de antemano,
uba_heraeus Sabes, no es tan importante responder a respuestas antiguas de alguien está equivocado en internet 😉
Hola a todos,
Lo siento, pero aunque esto fue publicado hace mucho tiempo, debo estar en desacuerdo con el punto 3):
Cuando itab_sortd se declara como SORTED TABLE, cualquier acceso (LOOP, READ,...) será una búsqueda binaria tan pronto como se utilice una parte inicial de una clave.
LEER TABLA itab_sortd CON CLAVE DE TABLA matnr = 'XXXX'
LEER TABLA itab_sortd CON CLAVE matnr = 'XXXX'
ambos se ejecutarán como búsqueda binaria, porque matnr es el primer campo de la clave primaria. (lo mismo se aplica para las claves secundarias...)
¡Es SOLO la TABLA ESTÁNDAR la que necesita la adición explícita de BINARY SEARCH!
Hola Rojar,
Por favor encuentra mis respuestas a tu pregunta.
1) Sí. Dado que la tabla ya está ordenada con MATNR y WERKS, si solo usas MATNR actuará como una búsqueda binaria solamente.
2) Por favor encuentra la siguiente declaración de sintaxis para tu requerimiento (Loop con todos los campos clave + campos adicionales)
itab_sortd tipo tabla ordenada con clave no única MATNR WERKS.
Loop en itab_sortd en wa_srtd donde MATNR = 'xxxx' y WERKS= 'yyyy' y PSTNK = 'zzzz'.
.....
Endloop
3) No.
Para las declaraciones mencionadas por ti arriba, solo ocurrirá la Búsqueda Lineal ya que no has mencionado al compilador que use la técnica de Búsqueda Binaria para la lectura. Necesitas mencionar explícitamente 'BINARY SEARCH' en la declaración de lectura aunque ya esté ordenado. La búsqueda binaria disminuirá el tiempo de búsqueda, ese es su propósito.
itab_sortd tipo tabla ordenada con clave no única MATNR WERKS.
LEER TABLA itab_sortd CON CLAVE matnr = 'XXXX' BINARY SEARCH .
Hola Rojer,
1) Tienes razón.
2) La búsqueda binaria solo funcionará para las claves mencionadas en la tabla de claves.
3) Sí.
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute