| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Выборка нескольких случайных значений из MySQL |
| Автор: console 18.9.2007, 13:56 |
| Есть таблица... допустим там 200 записей. Мне нужно выбрать 5 случайных... Как это осуществить? |
| Автор: BobiKK 18.9.2007, 14:03 | ||
Быстро, но оптимизации никакой. Для таблицы в 200 записей, однако, не критично |
| Автор: console 18.9.2007, 14:06 |
| Спасибо, 200 не предел... будет много записей, как оптимизировать? |
| Автор: BobiKK 18.9.2007, 14:17 |
| Оптимизировать тяжко. Можете почитать дискуссию здесь: http://www.mysqlperformanceblog.com/2006/09/01/order-by-limit-performance-optimization/ Варианты там тоже имеются |
| Автор: console 18.9.2007, 15:21 |
| Составление оптимальных запросов целое искусство... |
| Автор: console 19.9.2007, 11:03 | ||
| http://jan.kneschke.de/projects/mysql/order-by-rand/ приведена хорошая статья по выборке случайных значений. Примеры идут для выбора одного случайного. В конце статьи автор предлагает пример функции для выборки произвольного количества. Вопрос: не могут ли совпадать значения? В MySQL reference пишется, что RAND() генерит числа от 0 до 1. В примере подсчитал, что кол-во знаков после запятой = 14. Насколько безопасно использование такого кода?
|
| Автор: sTa1kEr 19.9.2007, 15:11 | ||
Еще как могут, там никто и не обещает, что рандомные значения будут уникальные. Для гарантированной уникальности я бы немного модифицировал хранимку
Дополнительная проверка нужна, что бы не было зацикливания, если параметр cnt больше общего количества строк. |
| Автор: ewolf 19.9.2007, 15:49 |
| Вот что-то сомнительно мне, что данная хранимая процедура будет производительней одного SQL запроса |