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

mysql order by rand () problema de rendimiento y solución

En primer lugar, todos generan un valor aleatorio de 1 a MAX(id), no 100000000.

Entonces hay al menos un par de buenas soluciones:

  1. Usar > no =

    SELECT items FROM tablea where status='0' and id>'$id23' LIMIT 1
    

    Crear un índice en (status,id,items) para hacer de esta una consulta de solo índice.

  2. Usa = , pero inténtalo de nuevo con un valor aleatorio diferente si no encuentras un acierto. A veces tomará varios intentos, pero a menudo tomará solo un intento. El = debería ser más rápido ya que puede usar la clave principal. Y si es más rápido y lo logra en un intento el 90 % de las veces, eso podría compensar el otro 10 % del tiempo cuando toma más de un intento. Depende de cuántos espacios tenga en sus valores de identificación.