Выборка из БД случайных строк без использования ORDER BY RAND()

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Из БД MySQL нужно сделать выборку 10 случайных строк.
Недавно прочитал, что ORDER BY RAND() очень тормозит запрос и тяжел для БД.
А с учетом того, что в таблице уже больше 30к записей, и ожидается сотни тысяч появилась острая необходимость избавится от ORDER BY RAND().
Но осложняется это тем, что поле id AUTO_INCREMENT, которое хранит айди пользователей (в таблице пользователи сайта) идет не по порядку, т.к. пользователи периодически удаляются.
В связи с этим методы, которые предлагаются в инете для таблиц, где id идут без разрывов не подходят.
Подскажите как быть в этой ситуации, как переписать запрос, с помощью php
 
На хабре было несколько интересных решений данной проблемы.
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Думаю, этого более чем достаточно.

Флуд в данной теме без конкретных решений или копипаст из статей выше будет строго наказан.
 
Есть большая таблица с 50к записей. В ней имеется поле id auto increment и по причине того, что часть записей в таблице были удалены, значения в этом поле идут не по порядку.
Имеется задача выбирать из этой таблицы случайное поле. Задача нетривиальная и я решил по крону ежедневно создавать таблицу в которой нужные данные из исходной таблицы были бы распределены случайным образом. Т.е. ежедневно перемешивать исходную таблицу во временную. Подскажите, каким образом это лучше всего реализовать? Насколько ресурсоёмкой будет такая операция?
 
Назад
Сверху