MySQL: obtener registro aleatorio

Hay algunas veces que tienes miles de registros en una tabla y necesitas obtener uno o varios de ellos, pero aleatoriamente. La forma tradicional que se suele usar para hacer esto es obtener todos los datos de la tabla y luego desde el programa que los haya solicitado realizar el random. Esta opción si la tabla en muy grande, no es buena, ya que para devolver una registro sólo, por qué obtenerlos todos. Para poder evitar esto y optimizar el rendimiento de la base de datos, mysql tiene la opción de ordenar por random y limitar la salida al número de registros que nos interese. No suele ser una opción muy conocida, pero para determinados casos, puede resultar muy útil y mejorar el rendimiento de la aplicación.
mysql> select count(*) from published;
+-----------+
|  count(*) |
+-----------+
|   9311254 |
+-----------+
1 row in set (0.00 sec)

mysql> select * from published order by rand() limit 3;
+---------+----------------------+
|      id | texto_publicación    |
+---------+----------------------+
|      51 | Hay 6 cosas que ...  |
|   12590 | En un lugar de ...   |
| 7301559 | Cuando yo estaba ... |
+---------+----------------------+
3 row in set (2.17 sec)


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios