Из документа MySQL:
SELECT * FROM tablename ORDER BY RAND () LIMIT 1
работает для небольших таблиц, но как только размер таблиц увеличится до 300 000 записей, это будет оченьмедленный, потому что MySQL должен будет обрабатывать ВСЕ записи из таблицы, упорядочивать их случайным образом, а затем возвращать первую строку упорядоченного результата, и эта сортировка занимает много времени.Вместо этого вы можете сделать это следующим образом (по крайней мере, если у вас есть auto_increment PK):
SELECT MIN (id), MAX (id) FROM tablename;
Получить результат в $ a
// php код
$ id = rand ($ a [0], $ a [1]);
SELECT * FROM tablename, где id> = '$ id' LIMIT 1