[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как сделать случайный вывод из mysql
Daniil94
фабщем есть таблица в бд, есть поле id и name. Как вывести 5 случайных (лучше подобных статье на этой странице) записей из столбца нэйм



Спустя 40 минут, 7 секунд (27.07.2010 - 14:26) Семён написал(а):
SELECT название_колонок FROM название_таблицы LIMIIT случайное_значение,5

случайное_значение диапазон зависит от общего кол-ва значений в базе smile.gif

Спустя 7 минут, 42 секунды (27.07.2010 - 14:34) Семён написал(а):
Есть ещё такой вариант:
SELECT название_колонок FROM название_таблицы WHERE 1 ORDER BY RAND() LIMIT 5

Спустя 1 час, 25 минут (27.07.2010 - 15:59) gzim9x написал(а):
Семён
...ORDER BY RAND()...

очень удобно на малых таблицах и очень медленно на больших. MySQL еще не научилась быстро генерировать случайные числа...

Спустя 1 час, 19 минут, 39 секунд (27.07.2010 - 17:19) vagrand написал(а):
Цитата
очень удобно на малых таблицах и очень медленно на больших. MySQL еще не научилась быстро генерировать случайные числа...


Умение быстро генерировать случайные числа MySQL-я тут нипричем. Тут все дело в отсутствии возможности использовать индексы для сортировки. Эксплейн нам говорит на подобный запрос: Using temporary; Using filesort, что есть ооочень плохо

Спустя 5 часов, 55 минут, 32 секунды (27.07.2010 - 23:14) gzim9x написал(а):
vagrand
да -- согласен, приведенный фактор имеет значение в задержке.
каюсь, лично не проверял ранее (бывает так, что доверяешь мануалам, в том числе MySQL-ным), но уж если написал (хотя акцент хотел сделать не на это, а на то, что есть другие методы, в том числе c несколькими запросами и генерацией случайных чисел в php)..., то постараюсь в ближайшее время промоделировать насколько велико влияние на задержку как скорости генерации RAND(), так и сортировки по заранее созданному rand-полю без индекса.
О результатах непременно отпишу.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.