Я просмотрел все ответы, и я не думаю, что кто-либо упоминает эту возможность вообще, и я не уверен, почему.
Если вы хотите предельно простоту и скорость, незначительная стоимость, то для меня, похоже, имеет смысл хранить случайное число против каждой строки в БД. Просто создайте дополнительный столбец random_number
и установите по умолчанию значение RAND()
. Создайте индекс в этом столбце.
Затем, когда вы хотите получить строку, генерируйте случайное число в вашем коде (PHP, Perl, что угодно) и сравните это с столбцом.
SELECT FROM tbl WHERE random_number >= :random LIMIT 1
Я думаю, хотя это очень удобно для одной строки, для десяти строк, таких как OP, вы должны были бы назвать это десять раз (или придумать умную настройку, которая ускользает от меня сразу )