ID列がある場合は、次のことを行うことをお勧めします:
-- 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;
ランダムID番号を選択するロジックは、アプリケーションレベルに移動できます。
SELECT * FROM table ORDER BY RAND LIMIT 40
MySQLはテーブル内のすべてのレコードを処理して、すべての行に対して全表スキャンを実行し、それらをランダムに並べ替えるため、非常に非効率的です。