Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выборка случайных строк 
:(
    Опции темы
begin
Дата 2.6.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Мне нужно выбрать случайные четыре записи из всех записей, удовлетворяющих критерию.
Просто выборка выглядит так:
Код

$query="SELECT * from `files` WHERE `album`='$album' limit 4";


Я так понимаю, если у меня в таблице нет столбца с рандомными числами, то мне остается только считывать ВСЕ записи в массив, а уже оттуда брать случайные?
PM MAIL   Вверх
Feldmarschall
Дата 2.6.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



когда ты пишешь тему вопроса, тебе показывает темы с похожими названиями.
ты правда думаешь, что первый столкнулся с такой проблемой?
PM   Вверх
begin
Дата 3.6.2008, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Ну я нашел похожую тему - но там так и не нашли изящное решение  smile 
PM MAIL   Вверх
skyboy
Дата 3.6.2008, 00:54 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



решение изящное: order by rand()
коротко, ясно и медленно :( по крайней мере - потенциально медленно, потому как using filesort - никакой индекс использовать не получится.
с другой стороны, "внешне" громоздкое, но по сути - удобное решение: генерирование id случайных записей на стороне клиента и на основе этих сгенерированных создание соответствующего запроса. 
Если эти твои случайновыбранные записи учавствуют в join или подзапросе, может быть некислый выигрыш в производительности.
PM MAIL   Вверх
Feldmarschall
Дата 3.6.2008, 08:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



begin, извини, родной, но "мне остается только считывать ВСЕ записи в массив" и "не нашли изящного решения" - это две большие разницы. Это во-первых.
Во-вторых, сама задача делать рандомную выборку - неизящная. Нет ни одной осмысленной причины делать абсолютно рандомную выборку по большой базе - подойдет псевдо рандомная. А по маленькой вообще не нужно париться - любое будет изящным. 

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.