Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/09/2013, 07:46
Avatar de informacionsys
informacionsys
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años
Puntos: 76
Consultar base de datos por cada ciclo ¿Lo hace lento ?

Buenos dias


Hola a todos..


Les comento , itero una consulta de muy pocos registros hablemos de que son 3500 registros ..

Código:
id_reg   id_suc    unidad
1          1        10 
2          1        20
3          1        30
4          2        50
5          2        35
6          2        5 
.............



, por cada id_suc(Llave foranea) diferente hago un llamado a una funcion que me retorna una arreglo de personajes .

internamente esa funcion maneja una recursividad tipo arbol , mas especificamente un arbol de grafos , como pueden saber ese proceso puede demorarse bastante tratandose de un arbol ...(Aqui es donde digo que toca la base datos la cantidad de veces segun recursividad )...

Si observamos arriba hay dos id_suc ej : 1 , 2

Al obtener por ejemplo los 700 personajes que retorno por el id_suc 1 , itero ese arreglo para realizar unas validaciones, finalmente genero un arreglo final por id_reg y los personajes finales....

si vemos la tabla de arriba, en el segundo ciclo viene el id_reg 2 y el id_suc 1 , ahi ya no tengo que ir a tocar la funcion de recursividad del id_suc 1 porque ya obtuve esa informacion en el primer ciclo .... asi sucesivamente es el proceso...

Es un proceso muy demorado y pesado.

Lo intente de otra manera , iterar el primer arreglo y almacenar en un arreglito los id_suc, despues recorrer ese arreglito y hacer el llamado a la recursividad ; almacenar todos los personajes en un arreglo final... ese arreglo final me quedo con 1400 personajes....

Iterar nuevamente el arreglo principal y dentro de este iterar el arreglo de personajes y validar el respectivo id_suc ..... de esta manera hum mejoro un poco pero no es significativo ....

A lo que quiero llegar es que ustedes me aconsejen cual es la mejor manera, en algunos casos consultar la base de datos por cada ciclo es rapido , pero en otros casos no .....