MySQL выбирает случайную строку - производительность rand()
Правда ли, что производительность ORDER BY rand()
очень медленная по сравнению с другими решениями? Если да, то каковы лучшие способы выбора случайных строк из базы данных?
Мой запрос:
SELECT sName FROM bpoint WHERE placeID=? ORDER BY rand() LIMIT 1;
Ответы
Ответ 1
Да, ORDER BY RAND()
может быть очень медленным в больших результирующих наборах.
Опция заключается в выборке результатов с помощью этого оператора (в массив):
SELECT sName FROM bpoint WHERE placeID=?;
После этого - используйте array_rand($resultset)
, чтобы получить рандомизированный элемент из запроса $resultset
.
Ответ 2
Я не думаю, что может быть простое решение, так или иначе, вы правы, очень медленно с большими таблицами, во всяком случае это может быть полезно, если вы http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/