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

Optimizar este Select

Estas en el tema de Optimizar este Select en el foro de Mysql en Foros del Web. Buenas a todos! tengo una tabla con dos campos: IP e id (int). Es una tabla para hacer votaciones donde se van guardando la IP ...
  #1 (permalink)  
Antiguo 07/03/2012, 03:21
Avatar de reprogramator  
Fecha de Ingreso: febrero-2012
Mensajes: 14
Antigüedad: 12 años, 2 meses
Puntos: 0
Exclamación Optimizar este Select

Buenas a todos!

tengo una tabla con dos campos: IP e id (int).
Es una tabla para hacer votaciones donde se van guardando la IP del usurio y el id al que se ha votado. El campo id es el item que se ha votado.
Lo que quiero hacer es sacar la id de mayor valor (int) que no haya sido votada por mi.

Para ello he realizado esta consulta que funciona perfectamente

Código:
SELECT  id FROM `votos` 
WHERE  id NOT IN ( SELECT  id from votes WHERE IP ='".GetUserIp()."' )
 ORDER BY  id DESC 
LIMIT 1
Pero tengo la duda de si el select anidado sobrecargará mucho el servidor. Lo digo en el caso de tener varios millones de votos.

Muchas gracias por los comentarios.
  #2 (permalink)  
Antiguo 07/03/2012, 04:09
Avatar de 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: Optimizar este Select

¿NO sería más simple algo como:
Código MySQL:
Ver original
  1. SELECT  MAX(id) id
  2. FROM votes
  3. WHERE IP ='".GetUserIp()."'
Semánticamente son equivalentes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/03/2012, 04:39
Avatar de reprogramator  
Fecha de Ingreso: febrero-2012
Mensajes: 14
Antigüedad: 12 años, 2 meses
Puntos: 0
Exclamación Respuesta: Optimizar este Select

Gracias por tu respuesta gnzsoloyo,

en mi consulta lo que hago es sacar el mayor id de entre todos los ids que aún no he votado:
WHERE id NOT IN ( SELECT id from votes WHERE IP ='".GetUserIp()."' )

y creo que en tu consulta sacas el mayor id donde la ip sea la mia GetUserIp().
  #4 (permalink)  
Antiguo 07/03/2012, 06:29
Avatar de 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: Optimizar este Select

Código MySQL:
Ver original
  1.     MAX(id) id
  2.     votos vo LEFT JOIN votes ve ON vo.id = ve.id
  3.     ve.id IS NULL;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: select, tabla, campos
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 22:34.