Mysql
 sql >> Base de données >  >> RDS >> Mysql

La fonction ORDER BY RAND() prend beaucoup de temps à s'exécuter dans mysql

Je vais la solution.

 SELECT p1.ID, p1.post_content, p1.post_title, p1.post_date, p1.post_name
     FROM posts as p1 JOIN
          (SELECT CEIL(RAND() *
                 (SELECT MAX(ID)
                    FROM posts)) AS id)
          AS p2
  WHERE p1.ID >= p2.id
  ORDER BY p1.ID ASC
  LIMIT 0, 24

C'est plus rapide que ma requête.

MySQL sélectionne 10 lignes aléatoires parmi 600K lignes rapides

Voici la solution.

Merci