Думаю каждому web-программисту встречается задача вывода случайного элемента или нескольких элементов из таблицы MySQL.
В последнем моем проекте как раз и появилось такое требование, по этому собрал несколько вариантов и решил описать их.
Начнем с самого простого решения:
SELECT * FROM table ORDER BY rand()
В этом примере используется специальная функция MySQL которая генерирует случайное число - RAND()
Результатом выполнения этого запроса к MySQL будет вывод всех записей таблицы в случайном порядке. Сразу возникает вопрос - как ограничить количество выводимых случайных записей? Ответ тоже простой! Используем оператор LIMIT.
Вот как будет выглядеть запрос для вывода трех случайных записей из таблицы:
SELECT * FROM table ORDER BY rand() LIMIT 1
При больших объемах таблицы (более 10 000 записей) этот запрос становится медленным и я бы советовал применять другой более сложный но быстрый запрос:
SELECT name FROM my_table JOIN ( SELECT CEIL(RAND() * ( SELECT MAX(id) FROM my_table )) AS randomID ) AS random_table ON random_table.randomID=my_table.ID
При сравнении первого и второго варианта на выборке из 50 000 рядов были получены следующие данные:
1 вариант - примерно 1,5 сек.
2 вариант -римерно 0,001 сек.
Так что простое не всегда быстрое.
Буду благодарен за ваши отзывы и пожелания, а может быть и новые варианты выборки случайного элемента из MySQL
Еще по этой теме:
- Файлообменники — легкая и стабильная ЗП
- Купить XRumer можно тут
- Регистрация в каталогах – нужно!
- Решение с русскими URL для sape
- Сон
- Оптимизация затрат в сапе
- Sexcashvip и подписки!!!
- Финансовый стриптиз за июнь
- Индексация сателита.
- seopult отзывы хорошие.

(1 голосов, среднее: 4.00 из 5)