Ver Mensaje Individual
  #8 (permalink)  
Antiguo 29/10/2010, 07:31
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Que consulta de las 2 es mejor?

Muy lindo, pero no consideras el overhead producido por transacciones, network, locks, carga de procesador, uso de memoria, etc.
Solamente estas midiendo el tiempo que tarda entre enviar desde el script PHP la sentencia al servidor y retornar el resultado; pero ese tiempo está afectado por muchos factores que no necesariamente son producidos por la sentencia de SQL.
Cosas a tener en cuenta:
- Los DBMS trabajan en forma estadística y poseen algorimos que permiten cambiar el plan de ejecución de una consulta según los resultados de esas estadísticas. Asi, es perfectamente posible que dos ejecuciones de la misma sentencia en momentos diferentes del tiempo tarden diferente tiempo, aún con el mismo conjunto de datos.
- La implementación de índices puede afectar la performance de la consulta, aún sin necesidad de reescribirla. Estos son usados internamente por MySQL, por lo que en realidad son invisibles para el programador.
- El mayor impacto en la performance es producto del hardware, por lo que cambios en él, afectan el tiempo de ejecución más que la sintaxis de la misma. Ampliar la memoria RAM o los discos usados tiene a veces mayor efecto que reescribir una consulta.
- La forma de configuración del servidor también puede afectar el tiempo de respuesta. Cambiar un servidor de 150 conexiones simultáneas a 500, y de compartido a dedicado, tiene un impacto directo en la performance.
- El número de usuarios concurrentes es otro factor sumamente importante a la hora de realizar consultas. Muchos usuarios implican el uso de mucha memoria de consultas y muchas transacciones concurrentes.
- Otros (muchos) motivos...


Todas estas cosas son invisibles para el PHP y sin embargo esa forma de "calcular" la performance no las puede tener en cuenta, porque no tienes acceso a toda esa información...

A nivel de la consulta en si, la mejor o peor performance que se puede obtener es producto de calcular el CC (costo de consulta), para lo cual deben hacerse ciertos cálculos partiendo de la base que mientras menos acceso a disco requiere para obtener la información, mejor es la performance de la consulta en sí. Esto se hace con ciertos cálculos que normalmente aparecen en la documentación especializada, o bien en los apuntes de los cursos de bases de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)