Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2011, 04:48
oms02
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 10 meses
Puntos: 11
optimizando código. php vs. mysql

Hola a todos.

Tengo una duda a la hora de hacer una tabla de clasificacion "pura y dura". Es decir, tengo nombre del jugador junto con otro numero asociado a el. En una zona determinada quiero mostrar una clasificacion de todos los datos nombre/numero de los usuarios.

Hasta ahora lo que hacia era lo siguiente:

Generaba una consulta donde asociaba todos los nombres y numeros de cada usuario y luego con la funcion array_multisort (de php) los ordenaba por su numero.

El codigo es algo asi:

Código PHP:
Ver original
  1. $txt_consulta = "SELECT principal.nombre, valores.numero
  2.                 FROM principal
  3.                 INNER JOIN valores ON principal.ID = valores.ID";
  4. $row = mysql_query($txt_consulta,$conexion);
  5.  
  6. //$num_valores, $valores varian en funcion del tipo de clasificacion que quiero.
  7. //si hay varios valores de un mismo tipo, los voy sumando.
  8.  
  9. $i=0;
  10. while($row = mysql_fetch_array($consulta))
  11.     {
  12.     $nombre[$i] = $row["nombre"];
  13.     $pareja[$nombre[$i]] = 0;
  14.     for($m=0;$m<=$num_valores-1;$m++)
  15.         {
  16.         $pareja[$nombre[$i]] = $pareja[$nombre[$i]] + $row[$valores[$m]];
  17.         }
  18.     $i++;
  19.     }
  20. array_multisort($pareja,SORT_DESC,$nombre,0,$pareja);

Hasta aqui todo correcto.

El problema me lo encuentro cuando me doy cuenta de que estoy siendo "un poco estupido" por crear un codigo php que podria simplificar enormemente si utilizo en la consulta un simple "ORDER BY valores.numero DESC".

He leido acerca de la optimizacion de consultas (sin llegar a ser un entendido, ni la mitad de eso) y he visto que la gente comenta que cuanto menos ORDER BY (entre otras cosas), mejor.

Aqui viene un poco mi duda....

Me conviene utilizarlo o sigo asi?

Mi opinion personal es que deberia hacerlo ya que aun cuando la tabla se haga grande, el indice del array que utilizo se hara igualmente grande, por lo que la funcion array_multisort debera igualmente hacer un gran trabajo para ordenar todos esos datos...

Pero realmente no se....que me aconsejais??

Un saludo y muchas gracias por la atencion!