Als je een ID-kolom hebt, kun je beter het volgende doen:
-- 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;
De logica van het selecteren van het willekeurige id-nummer kan worden verplaatst naar het applicatieniveau.
SELECT * FROM table ORDER BY RAND LIMIT 40
is erg inefficiënt omdat MySQL ALLE records in de tabel zal verwerken door een volledige tabelscan uit te voeren op alle rijen, en ze willekeurig te rangschikken.