Pavell18RUS
@Pavell18RUS

Какой должен быть запрос рандомного селекта с лимитом?

Нужно вытащить 12 рандомных поля, со всеми строками из MySQL. Сейчас использую -
SELECT * FROM items ORDER BY RAND(), LIMIT 12
Но ругается, помогите написать правильно.
  • Вопрос задан
  • 2187 просмотров
Решения вопроса 1
Запятая лишняя
SELECT * FROM items ORDER BY RAND() LIMIT 12
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
За решение приведенное @aspetek надо убивать.
Оно работает только пока у вас крошечная таблица.
Даже на десятках тысяч записей, не говоря про сотни тысяч - оно начинает заметно тормозить.

Почему так происходит, и какие решения придумывают люди что бы этого избежать - предлагаю нагуглить самостоятельно.
Ответ написан
AMar4enko
@AMar4enko
Сгенерировать 12 ID от 1 и до максимального значения в таблице и дернуть их через IN().
Если результат получится меньше, чем 12 значений (удаленные записи), сгенерировать недостающее количество ID с учетом уже вытянутых и снова дернуть через IN. И так, пока не получите 12 элементов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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