Mysql
 sql >> Datenbank >  >> RDS >> Mysql

ORDER BY RAND()-Alternative

Wenn Sie eine ID-Spalte haben, ist es besser, Folgendes zu tun:

-- create a variable to hold the random number
SET @rownum := SELECT count(*) FROM table;
SET @row := (SELECT CEIL((rand() * @rownum));

-- use the random number to select on the id column
SELECT * from tablle WHERE id = @row;

Die Logik der Auswahl der zufälligen ID-Nummer kann auf die Anwendungsebene verschoben werden.

SELECT * FROM table ORDER BY RAND LIMIT 40

ist sehr ineffizient, da MySQL ALLE Datensätze in der Tabelle verarbeitet, indem es einen vollständigen Tabellenscan für alle Zeilen durchführt und sie zufällig anordnet.