Bases de datos
Para mejorar la eficiencia y reducir el uso de recursos físicos o de red, lo normal es querer evitar llamar varias veces a una misma base de datos en la misma asignación sin que esto sea necesario. Puede que sigan existiendo situaciones en las que simplemente no podrá evitar que se llame varias veces a una misma base de datos debido a la naturaleza de esa asignación, pero tenga en cuenta las siguientes consideraciones:
•Si solo necesita una llamada a la BD, evite colocar el componente de BD en un contexto de nivel superior que requiera llamar a la BD varias veces. Esto podría ocurrir, por ejemplo, si añade un componente de BD dentro de una función definida por el usuario que recibe una secuencia de valores como entrada y a la que, por tanto, se llama una vez por cada elemento de esa secuencia (véase también Funciones definidas por el usuario). Las variables suelen ser útiles para obtener datos dentro del mismo contexto antes de pasarlo al componente de destino.
•Si necesita sumar valores de una BD (por ejemplo, para contar el número de registros con la función count), se recomienda que conecte el resultado de la función agregada a una variable en la que compute-when=once. Esto evita llamadas repetitivas a la BD, como se describe en Ejemplo: contar filas de tabla de BD.
•Intente extraer todos los datos de BD en una llamada (por ejemplo, una instrucción SQL-SELECT o un procedimiento almacenado) en vez de añadir varias veces el mismo componente de BD a la asignación.
•Si necesita extraer datos de varias tablas o vistas de la misma base de datos, es recomendable que use un componente Join (en modo SQL) o una instrucción SQL-SELECT. Esta última es lo más conveniente si prefiere escribir la instrucción SQL-SELECT usted mismo. Si necesita combinar datos de BD con otros datos que no sean de BD o con datos de distintas BD, es preferible usar uniones no SQL.
•Para optimizar la ejecución de uniones no SQL en asignaciones con muchos datos, ejecute las asignaciones con MapForce Server Advanced Edition.
•Si necesita filtrar datos de una BD, es más eficiente usar un componente SQL-WHERE en vez de un filtro estándar, ya que en la gramática de la BD correspondiente el componente anterior está optimizado para que funciones específicamente con BD.