@mark2712

Как выбрать одну случайную запись из таблицы MySQL?

Есть таблица (в ней может быть 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
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ответы на вопрос 2
Immortal_pony
@Immortal_pony Куратор тега MySQL
Можно попробовать рандомизировать только id. Однако это не панацея. Выборка случайных данных при больших объемах медленная и с этим ничего не поделать.
Ответ написан
Комментировать
Vovanys
@Vovanys
На php генерируй случайный id, который можно сделать между min(id) и max(id) из бд.
Правда это еще один селект к бд для получения макcимума и минимума id.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы