[Из песочницы] Быстрый выбор случайных значений из больших таблиц MySQL по условию

Задача выбора случайных строчек из таблицы довольно часто возникает перед разработчиками. В случае, если используется СУБД MySQL, обычно она решается примерно следующим способом: SELECT * FROM users WHERE role_id=5 ORDER BY rand () LIMIT 10 Такой код работает крайне медленно для больших таблиц и когда задается условие WHERE, без WHERE или таблица небольшая, есть эффективные решения, например habrahabr.ru/post/54176/ или habrahabr.ru/post/55864/. Но решений для случая большой таблицы и необходимости фильтровать по условию, получая при каждом запросе новые значения в сети я не нашел, поэтому описание моего способа под катом.Читать дальше →

© Habrahabr.ru