Foros del Web » Programando para Internet » PHP »

optimizando código. php vs. mysql

Estas en el tema de optimizando código. php vs. mysql en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/04/2011, 04:48
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 9 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!
  #2 (permalink)  
Antiguo 08/04/2011, 08:17
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, oms02

Muevo tu tema al foro de PHP desde Web general.

Saludos,
  #3 (permalink)  
Antiguo 08/04/2011, 08:52
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: optimizando código. php vs. mysql

LO ideal es que la query traiga solamente los datos que necesitas y en el oredn en que los pedis.
si te traes todos los datos y los filtras por php y no por sql,
en algun momento tu sitio explota: kapush!!!!!!
  #4 (permalink)  
Antiguo 08/04/2011, 12:29
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 9 meses
Puntos: 11
Respuesta: optimizando código. php vs. mysql

OK patriarka. Gracias por responder.

He hecho esto mismo y claro...ahora la consulta suelta en el explain: Using temporary; Using filesort

aunque supongo que ambas cosas son obligatorias con los requerimientos que pedia....supongo....

Lo que me ha resultado es eso que has comentado sobre:

Cita:
si te traes todos los datos y los filtras por php y no por sql,
en algun momento tu sitio explota
no tenia ni idea de eso. Quiere eso decir que mas me vale hacer los calculos sencillos que pueda hacer en MySQL, en general, en MySQL?? o bueno....algun consejillo para un noob como yo sobre cosas de estas??

1 saludo y muchas gracias!

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:47.