Índices de tablas

lunes, 30 de enero de 2012

3 Bottle Bar by H.i. Williams (1943) page xi

Un índice de una base de datos, según la Wikipedia es:

“una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla en una base de datos”

Se suele crear un índice sobre una tabla del diccionario ABAP cuando en uno de nuestros programas nos vemos obligados a hacer búsquedas de información, pero el acceso a ésta no se realiza de acuerdo a campos claves de dicha tabla.


Ejemplo

Imaginemos que deseamos extraer un listado de materiales de nuestra base de datos. Para ello debemos ir a la tabla MARA que contiene toda la información general de materiales de nuestra empresa. Lo ideal en este caso sería hacer la búsqueda poniendo como condición de selección el campo número de material (MARA-MATNR) que es el único campo clave de la tabla. Sin embargo, nuestro caso es más complejo y se nos pide hacer una búsqueda de materiales a partir del campo número de material anterior (MARA-BISMT) en un código como el siguiente:

REPORT zprueba
       NO STANDARD PAGE HEADING LINE-SIZE 255.

TABLES:
  mara.

DATA: BEGIN OF t_mara OCCURS 0,
  matnr LIKE mara-matnr,
  bismt LIKE mara-bismt,
END OF t_mara.

SELECT-OPTIONS:
  s_bismt FOR mara-bismt.

START-OF-SELECTION.

  SELECT * FROM mara
    INTO CORRESPONDING FIELDS OF TABLE t_mara
    WHERE bismt IN s_bismt.

El rendimiento de un programa de este tipo se encuentra penalizada ya que el campo de búsqueda no es clave en la tabla.

Solución

Crear un índice para el campo MARA-BISMT.
  • Entramos en la tabla de diccionario MARA.
Herramientas / Workbench ABAP / Desarrollo / SE11 – Diccionario ABAP
  • Marcamos el botón ‘Indices’ y “crear índice”.



  • Damos una codificación a nuestro índice, por ejemplo, Z1.



  • Lo identificamos con una descripción.
  • Dejamos la opción que nos da por defecto, índice no único en todos los sistemas de la base de datos.
  • Escribimos el campo por el cual vamos a indexar la base de datos. Es importante que uno de ellos sea siempre el campo mandante.



  • Ya podemos grabar y activar.

A partir de ahora, en principio debería mejorar el rendimiento de nuestro programa.

Imagen inicial | Metagrrrl

1 comentario: