реально нафига придумывать то что уже придумано тем более таким способом
Призрак, полностью согласен!
Можно так попробовать:
SELECT pk, data FROM test AS r1 JOIN (SELECT (RAND() * (SELECT MAX(pk) FROM test)) AS id) AS r2 WHERE r1.pk >= r2.id ORDER BY r1.pk ASC LIMIT 1;
Миледи рекомендую такую штуку не использовать на высоконагруженных проектах.
---
Функа РАНД мускулом не кешится. Вообщем нагрузка на бд будет высокая.
[сообщение прошло проверку админом]
ето хорошо если ид идет по порядку,а вот представте ситуевину когда ид идут 1,2,3,4,15,16,24,27...в таком случае если сгенерируется число 10 например,скрипт выведет пустоту.
[сообщение прошло проверку админом]
правдо если таблица более 10-20тыс строк скорость реально упадет...
можно проще =)
Select * From TABLE Order By rand() Limit 1;