MySQL random

Для выборки случайного ряда из таблицы можно воспользоваться запросом:

SELECT * FROM table ORDER BY RAND() LIMIT 1;

Однако для лучшей производительности при большом количестве рядов и наличии первичного индекса по полю id который идет БЕЗ ПРОПУСКОВ, в целях оптимизации производительности лучше воспользоваться двумя выборками с генерацией случайного числа на стороне PHP скрипта:

$result = mysql_query(’SELECT MAX(id) FROM table’);
$max_id = mysql_result($result, 0);
$random_id = mt_rand(1, $max_id);
$row = mysql_query(’SELECT * FROM table WHERE id = ‘.$random_id);

Хочу отметить, что таблиц без удаленных рядов, а значит с наличием id без пропусков не так и много, поэтому данный пример не претендует на панацею.

Ресурс-источник: http://mikesmith.mchedlishvili.name