Ver Mensaje Individual
  #23 (permalink)  
Antiguo 08/11/2003, 22:19
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
jpinedo ..

El problema de usar el "for" es que antes debes de contar el total de registros que pueda arrojar esa consulta ..

En tu caso lo haces con mysql_num_rows() .. Eso implica muchooo tiempo para Mysql+PHP por qué esa función realiza la consulta completa .. y cuenta los registros que puedan resultar.

Si quieres usar el "for" .. te recomendaría que para contar el total de registros en lugar de mysql_num_rows() usases SQL .. concretamente: SELECT COUNT(*) FROM tabla ... etc ... Esto te arrojará un sólo registro/campo con el total de registros que cumplan tu condición (si usas WHERE o no ...). Ese proceso es realizado -integramente- por Mysql . y los resultados son bastante mejores (en rendimiento) que usar mysql_num_row() y más cuando luego igualmente vas hacer un mysql_fetch_array() que lo que hace es realizar la misma consulta .. y a base de ejecutar nuevamente mysql_fetch_array() vas avanzando el puntero interno de la consulta un registro más hasta que finalice ..

Por eso, todo el mundo usa el "while" .. por qué mysql_fetch_xxx() (xxx es .. cualquiera .. array, assoc, object ..) a cada petición que hagas (lo ejecutes) obtiene el "record set" en curso ..y mueve el puntero una posición hacia adelante en la consulta obtenida por tu mysql_query() .. al llegar al último registro, devuelve "FALSE". Con lo cual .. te estás ahorrando el proceso de "contar" (sea por uno (php función mysql_num_rows()) o por otro método (SQL con COUNT() ..) el total de registros que pueda arrojar tu consulta para usarlo en tu "for" ..

Puedes hacer tu mismo algunos "test" .. Usa una estructura tipo "for" (usando para calcular el total de registros mysql_num_rows() y SQL COUNT() ..) y una tipo "while" clásico. Mide el tiempo de ejecución (con microtime() ) .. y saca tus conclusiones.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.