Быстрый выбор случайной строки из большой таблицы MySQL

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
8,774
Реакции
1,505
Credits
29,921
Быстрый выбор случайной строки из большой таблицы MySQL
photo_2024-11-05_15-54-03.jpg
Для эффективного извлечения случайной записи из большой таблицы в MySQL стоит избегать команды ORDER BY RAND(). Вместо этого используйте уникальный идентификатор id. Сначала определите максимальное значение id, генерируйте случайное число в пределах этого диапазона и затем получите строку с соответствующим id:
SQL:
-- Отказываемся от полного сканирования таблицы, затратного по времени!
SELECT * FROM your_table
WHERE id >=
  (SELECT FLOOR(1 + RAND() *
    (SELECT MAX(id) FROM your_table)))
LIMIT 1;

-- Вместо 'your_table' укажите корректное имя вашей таблицы (если она не носит название 'your_table').
Применение этого подхода будет позволять быстро получать случайное значение без лишней нагрузки на сервер. Экономьте свое время! ⏰