Comment fonctionne la fonction ORDER BY RAND() de MySQL
La fonction ORDER BY RAND() de MySQL génère des résultats apparemment aléatoires, mais son mécanisme réel diffère de la croyance commune. Contrairement aux hypothèses, MySQL n'ajoute pas de colonne de valeurs aléatoires qui influence le tri. Au lieu de cela, il utilise le processus suivant :
Temps d'exécution inattendus
Les requêtes de test fournies démontrent des temps d'exécution inattendus :
Query | Execution Time |
---|---|
SELECT * FROM table ORDER BY RAND() LIMIT 1 | 30-40 seconds |
SELECT id FROM table ORDER BY RAND() LIMIT 1 | 0.25 seconds |
SELECT id, username FROM table ORDER BY RAND() LIMIT 1 | 90 seconds |
Cette variation du temps d'exécution est attribuée aux différentes données récupérées par chaque requête. La sélection de la ligne entière (*) entraîne un coût plus élevé que la récupération de colonnes spécifiques (id) ou la récupération de données déjà indexées (id).
Méthodes alternatives pour une sélection aléatoire rapide
Bien que ORDER BY RAND() puisse ne pas offrir des performances optimales, des méthodes alternatives peuvent fournir des résultats plus rapides :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!