MySQL Выбор случайных строк в один запрос - rsajob/docs GitHub Wiki
Самый быстрый способ MAX * rand()
Получение одной строки:
SELECT t.pk_id FROM test as t,
(SELECT ROUND((SELECT MAX(pk_id) FROM test) *rand()) as rnd
FROM test LIMIT 1) tmp
WHERE t.pk_id = rnd
Среднее время выполнения — 0.001 секунды
Получение 100 строк:
SELECT t.pk_id FROM test as t,
(SELECT ROUND((SELECT MAX(pk_id) FROM test) *rand()) as rnd
FROM test LIMIT 100) tmp
WHERE t.pk_id in (rnd)
ORDER BY pk_id
Среднее время выполнение — 0.003 секунды
Источник: Cтаться на хабре MySQL Выбор случайных строк в один запрос