Wie die ORDER BY RAND()-Funktion von MySQL funktioniert
Die ORDER BY RAND()-Funktion von MySQL generiert scheinbar zufällige Ergebnisse, ihr tatsächlicher Mechanismus unterscheidet sich jedoch aus dem weitverbreiteten Glauben. Entgegen der Annahme fügt MySQL keine Spalte mit Zufallswerten hinzu, die die Sortierung beeinflusst. Stattdessen wird der folgende Prozess verwendet:
Unerwartete Ausführungszeiten
Die bereitgestellten Testabfragen zeigen unerwartete Ausführungszeiten:
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 |
Diese Variation in der Ausführungszeit ist auf die unterschiedlichen Daten zurückzuführen, die von jeder Abfrage abgerufen werden. Das Auswählen der gesamten Zeile (*) verursacht höhere Kosten im Vergleich zum Abrufen nur bestimmter Spalten (ID) oder zum Abrufen bereits indizierter Daten (ID).
Alternative Methoden für die schnelle Zufallsauswahl
Während ORDER BY RAND() möglicherweise keine optimale Leistung bietet, können alternative Methoden schnellere Ergebnisse liefern:
Das obige ist der detaillierte Inhalt vonWie funktioniert die ORDER BY RAND()-Funktion von MySQL eigentlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!