![]() |
|
Модераторы: skyboy |
![]()
|
|
| begin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
Мне нужно выбрать случайные четыре записи из всех записей, удовлетворяющих критерию.
Просто выборка выглядит так:
Я так понимаю, если у меня в таблице нет столбца с рандомными числами, то мне остается только считывать ВСЕ записи в массив, а уже оттуда брать случайные? |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
когда ты пишешь тему вопроса, тебе показывает темы с похожими названиями.
ты правда думаешь, что первый столкнулся с такой проблемой? |
|||
|
||||
| begin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
Ну я нашел похожую тему - но там так и не нашли изящное решение
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
решение изящное: order by rand()
коротко, ясно и медленно :( по крайней мере - потенциально медленно, потому как using filesort - никакой индекс использовать не получится. с другой стороны, "внешне" громоздкое, но по сути - удобное решение: генерирование id случайных записей на стороне клиента и на основе этих сгенерированных создание соответствующего запроса. Если эти твои случайновыбранные записи учавствуют в join или подзапросе, может быть некислый выигрыш в производительности. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
begin, извини, родной, но "мне остается только считывать ВСЕ записи в массив" и "не нашли изящного решения" - это две большие разницы. Это во-первых.
Во-вторых, сама задача делать рандомную выборку - неизящная. Нет ни одной осмысленной причины делать абсолютно рандомную выборку по большой базе - подойдет псевдо рандомная. А по маленькой вообще не нужно париться - любое будет изящным. |
|||
|
||||
![]()
|
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |