Есть таблица (в ней может быть 1 запись, а может 999999999999):
table1:
id | name | text
2 | qqqq | dfgga
3 | wwww | aaerhea
5 | wwww | ahndr
7 | qqqq | ndmttm
8 | qqqq | fmfmfzf
9 | qqqq | gnntrm
Есть запрос:
$query = "SELECT * FROM table1 WHERE name='qqqq' LIMIT 1";
Нужно выбрать одну рандомную запись из таблицы.
ORDER BY RAND() работает медленно, LIMIT со смещением не подойдёт (тоже работает медленно при большом смещении)
Может быть у кого нибудь есть готовые решения? В моём распоряжении PHP 7.0, MySQL 5.6
Как вариант можно взять максимальное id (MAX()) и минимальное id (MIN()), после на PHP сгенерировать между ними случайное число и проверять - есть ли запись с таким id. Если записи нет, то инкрементить или декрементить id (в зависимости от желания и проверять чтоб не больше max и не меньше min). Рано или поздно наткнешься на случайную запись. Может сразу, если повезет, может через несколько попыток. Костыль конечно. Но как вариант имеет право на жизнь.
Если поле числовое, то можно использовать не прямое совпадение, а оператор > или <.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости