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