Valores aleatorios en MySQL

MySQL tiene la función RAND() para devolver valores aleatorios y en este post lo que voy a comentar es que no es tan óptimo utilizarla en caso de que queramos un registro aleatorio de una tabla.

Por ejemplo, imagina que quieres un registro aleatorio de una tabla, utilizando RAND() lo tendríamos con la siguiente query:

select * from tabla orde by RAND() limit 1





Esta consulta es mucho menos eficiente que si ejecutamos la siguiente:




select * from tabla limit X,1





Dónde X sería un valor aleatorio generado en un lenguaje de servidor entre 1 y el total de registros de la tabla, claro para esto necesitamos saber ese valor máximo pero si lo tienes te recomiendo que utilices la segunda consulta que es una media de 4 a 5 veces más rápida que la primera.

Comentarios