Ver Mensaje Individual
  #6  
Viejo 31/03/11, 17:07:29
Avatar de hugoa77
hugoa77 hugoa77 is offline
Senior Member
 
Fecha de Ingreso: may 2010
Mensajes: 130
un aporte más... por ahí te aporta un poco de luz...

Optimización en el acceso a la Base de Datos

Unos simples consejos son los siguientes:

Si se va a acceder a varias tablas relaciones, es recomendable crear una vista con las tablas relacionadas y accesar a ella.

Con la opción FOR ALL ENTRIES se consigue que las entradas que se consiguieron en el primer select (tabla driver) se consigan en el segundo select por lo que se ejecutaría el segundo select solo una vez.

SELECT matnr FROM mara INTO TABLE imara WHERE cond.
SELECT * FROM mard FOR ALL ENTRIES IN imara WHERE mantr = imara-matnr.

Con la Instrucción FORL ALL ENTRIES hay que tener sumo cuidado en la manera en que se va a usar, primero se debe asegurar que la tabla driver con la se va a comparar no se encuentre vacia, pues si es así, traería toda la data que esté en la base de datos, perjudicando el performance del programa, y segundo, si la tabla interna tiene muchos registros, el select a la Base de Datos sería mucha mas lento pues si utilizaría mucha memoria.

Para hacer mas eficiente el FOR ALL ENTRIES es recomendable, borrar los valores duplicado de la tabla driver, ordenarla y si es posible convertirla en una tabla de rangos usando la sentencia BETWEEN.

FOR ALL ENTRIES IN imara WHERE matnr >= imara-matnr
AND matnr <= imara-matnr.

Es recomendable y mas rápido indicarle al SELECT que campos va leer, si no se necesitan todos ellos.

SELECT campo1 campo2 campo3 FROM TABLE tabla INTO TABLE itabla.

Donde itabla debe estar declarada con los campos que se quieren seleccionar de la tabla.

Fuente:
Slds
Responder Con Cita