Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

optimizar consulta al maximo

Estas en el tema de optimizar consulta al maximo en el foro de Mysql en Foros del Web. estimados.. tengo esta consulta SELECT username, id FROM ( SELECT users.username, MAX(photos.id) id FROM users INNER JOIN photos ON photos.user_id = users.id WHERE users.status = ...
  #1 (permalink)  
Antiguo 16/05/2009, 23:15
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
optimizar consulta al maximo

estimados..
tengo esta consulta

SELECT username, id
FROM (
SELECT users.username, MAX(photos.id) id
FROM users INNER JOIN photos
ON photos.user_id = users.id
WHERE users.status = 0 AND photos.status = 0
GROUP BY users.id) last_users
ORDER BY id DESC
LIMIT 0,6

y esta otra...

SELECT users.username, photos.id
FROM users
INNER JOIN photos ON photos.user_id = users.id AND photos.status = 0
WHERE users.status = 0
GROUP BY users.id
ORDER BY id DESC
LIMIT 0,6

cual de las dos es mejor? o las dos son pesimas?
a la tabla photos le agregue un INDICE a user_id

por las dudas las estructuras son las siguientes

users
.id
.username
.status

photos
.id
.status
.user_id

la idea de estas consultas es mostrar las 6 ultimas fotos cargadas sin repetir usuarios
lo que veo cuando hago EXPLAIN es que la tabla photos la recorre toda... veo porque me devuelve 1123234532 es necesario que la recorra todo?

cualquier ayuda me viene bien, estas consultas ya me hacen doler la cabeza
gracias!
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 18/05/2009, 11:13
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: optimizar consulta al maximo

HOlas creo que la segunda opcion es mas adecuada ya que no utilizas subconsultas, de todos modos podrias mirar el tiempo que demora la ejecucion de cada una y de ahi determinar que te conviene.

Saludos
__________________
->Aprender es un proceso que incluye el error..
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 03:05.