sql >> Base de Datos >  >> RDS >> Mysql

Cómo ordenar los resultados de una consulta al azar y seleccionar filas al azar. (MySQL)

Si no le importa sacrificar la complejidad en las operaciones de inserción/actualización/eliminación por la velocidad en la selección, siempre puede agregar un número de secuencia y asegurarse de que se mantenga en la inserción/actualización/eliminación, luego cada vez que haga una selección, simplemente seleccione en uno o más números aleatorios dentro de este rango. Si la columna "secuencia" está indexada, creo que es lo más rápido que obtendrá.

Una alternativa es "barajar". Agregue una columna de secuencia, inserte valores aleatorios en esta columna y cada vez que seleccione registros, ordene por columna de secuencia y actualice las secuencias de registros seleccionadas a nuevos valores aleatorios. La actualización solo debería afectar los registros que ha recuperado, por lo que no debería ser demasiado costosa... pero puede valer la pena realizar algunas pruebas en su conjunto de datos.

Esto puede ser algo bastante malo para decir, pero lo diré de todos modos ... ¿alguna vez es necesario mostrar datos 'aleatorios'? si intenta mostrar registros aleatorios, es posible que esté haciendo algo mal.

Piensa en Amazon... ¿muestran productos al azar, o muestran los populares y 'cosas que otras personas compraron cuando miraron esto'? ¿SO le da una lista de preguntas aleatorias a la derecha de aquí, o una lista de preguntas relacionadas? Solo un poco de alimento para el pensamiento.