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 Выбор случайных строк в один запрос