У меня есть запрос SELECT, от которого я ожидаю миллионы результатов. Мне нужно рандомизировать эти результаты в MySQL. Выполнение этого в моем скрипте после запроса явно использует слишком много ОЗУ. Может кто-то может доработать этот запрос так, чтобы результаты были случайными без использования порядка по rand()? Я видел несколько примеров и пытался их использовать, но они не работают для меня, поскольку все они, похоже, зависят от возвращения всей таблицы, а не с использованием предложения WHERE. Вот мой запрос:MySQL, как безопасно рандомизировать вывод этого запроса?
SELECT * FROM pool
WHERE gender = 'f'
AND (`location` = 'united states' OR `location` = 'us' OR `location` = 'usa');
Что именно вы пробовали? Вы сказали: «Пробовали некоторые примеры», ну, что это? В чем проблема с использованием ORDER BY RAND()? – Arran
примеры просто не применяются к моему запросу, поэтому я не опубликовал их. ORDER BY RAND() не работает для больших таблиц. раздел заканчивается заполнением, а запрос занимает годы, чтобы заполнить таблицу из 10 миллионов строк. – xendi
'ORDER BY RAND()' с огромными таблицами очень медленный. он генерирует дополнительную временную таблицу, более подробно здесь: –
Zefiryn