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.