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

ayuda con consulta ramdom...

Estas en el tema de ayuda con consulta ramdom... en el foro de Mysql en Foros del Web. Hola quiciera saber si es malo lanzar una consulta de este tipo "RANDOM" a una base de datos? @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT ...
  #1 (permalink)  
Antiguo 16/11/2010, 15:01
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
ayuda con consulta ramdom...

Hola quiciera saber si es malo lanzar una consulta de este tipo "RANDOM" a una base de datos?

Código MySQL:
Ver original
  1. SELECT R.idreglas,R.nombre,R.mensaje,P.nombre FROM reglasxpropiedades RXP
  2.     INNER JOIN propiedades P
  3.     ON P.idpropiedad = RXP.idpropiedad
  4.     INNER JOIN reglas R
  5.     ON R.idreglas=RXP.idreglas
  6.     WHERE P.idpropiedad=802202 ORDER BY RAND() LIMIT 0,1;

saludos

Última edición por RIVERMILLOS; 16/11/2010 a las 15:13
  #2 (permalink)  
Antiguo 16/11/2010, 15:28
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: ayuda con consulta ramdom...

no es malo, es una buena forma para obtener registros al azar.

Eso si, el "LIMIT 0,1" obtiene el mismo resultado si solo pones "LIMIT 1", o sea si empieza en 0 se puede omitir.
  #3 (permalink)  
Antiguo 16/11/2010, 15:30
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: ayuda con consulta ramdom...

¿Estás seguro que lo que posteas es una copia fiel de lo que pones en el script?
Pregunto porque no contiene ningún error de sintaxis, por lo que no debería fallarte.

¿Qué versión de MySQL usas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 16/11/2010, 15:31
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: ayuda con consulta ramdom...

Saludos

Pensaria qeu podria afectar la velocidad de respuesta de una consulta ya que como el selecciona aleatoriamente una columna podria ser que no es indice y sobre una cantidad considerable de registros se notara el cambio
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #5 (permalink)  
Antiguo 16/11/2010, 15:33
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: ayuda con consulta ramdom...

sip osea la consulta va Bien, pero he leido que es malo hacer consultas aleatorias por cuestiones de rendimiento y esas cosas , entonces no se si esto es cierto?

saludos
  #6 (permalink)  
Antiguo 16/11/2010, 15:33
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: ayuda con consulta ramdom...

Si estás usando PHP 5.2.1, es posible que tengas problemas con el uso de LIMIT. Tiene un bug no solucionado en el PDO.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 16/11/2010, 15:35
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: ayuda con consulta ramdom...

Entonces seria mejor seleccionar todos los registros asi

Código MySQL:
Ver original
  1. SELECT R.idreglas,R.nombre,R.mensaje,P.nombre FROM reglasxpropiedades RXP
  2.  
  3.     INNER JOIN propiedades P
  4.  
  5.     ON P.idpropiedad = RXP.idpropiedad
  6.  
  7.     INNER JOIN reglas R
  8.     ON R.idreglas=RXP.idreglas
  9.  
  10.     WHERE P.idpropiedad=802202

y en php hacer la parte de ramdon?

saludos
  #8 (permalink)  
Antiguo 16/11/2010, 15:54
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: ayuda con consulta ramdom...

definitivamente no, tendrías que guardar todos los registros en arreglos y luego ordenarlos, te saldrá mas lento que hacer el random en mysql.

El random lo unico que hace es poner un numero al azar y luego el motor los ordena de menor a mayor para entregarte la respuesta, esto es lo mismo que ordenar la consulta por cualquier otro campo.
  #9 (permalink)  
Antiguo 16/11/2010, 15:57
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: ayuda con consulta ramdom...

Saludos

Yo te sugeriria hacer inicialmente un count
Código MySQL:
Ver original
  1. SELECT COUNT(idpropiedad) FROM tabla

Luego en php generar el numero randomico de 0 al numero total del conteo

y por ultimo una sentencia final que podrias manejarlo de esta manera

Código MySQL:
Ver original
  1. SELECT R.idreglas,R.nombre,R.mensaje,P.nombre FROM reglasxpropiedades RXP
  2.    INNER JOIN propiedades P
  3.    ON P.idpropiedad = RXP.idpropiedad
  4.    INNER JOIN reglas R
  5.    ON R.idreglas=RXP.idreglas
  6.    WHERE P.idpropiedad=802202
  7.    LIMIT 1 OFFSET {numero_generado_php}

De esta manera mejoraria muchisimo mas el redimiento a como lo pensabas desarrollar.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #10 (permalink)  
Antiguo 16/11/2010, 16:04
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: ayuda con consulta ramdom...

pero no tendria problema en que el numero que seleccione con random luego no conincidad con la segunda consulta. osea digamos salio "8" y este registro no coincidad con "WHERE P.idpropiedad=802202"?


saludos
  #11 (permalink)  
Antiguo 16/11/2010, 16:14
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: ayuda con consulta ramdom...

mmm si tienes razon , se me paso esa parte necesariamente debe ir esa condicion?
por que de no ser asi si puedes hacerlo sin el where y el count sobre un campo de toda la consulta que tienes
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #12 (permalink)  
Antiguo 17/11/2010, 07:09
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: ayuda con consulta ramdom...

si necesariamente siempre debe ir la condicion porque debe seleccionar aleatoreamente un registro entre los que complan el where.

Etiquetas: ramdom
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 08:40.