Случайная выборка из базы данных Postgres

alexeyco

Новичок
Случайная выборка из базы данных Postgres

Здравствуйте

Возникла задача сделать следующую вещь:
есть таблица, к примеру | ID | QUESTION | ANSWER
нужно выбрать 1 вопрос, 1 ответ на него и 4 случайных ответа, и вывести - конечно, случайным порядком.

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

-~{}~ 03.07.09 22:09:

Упс, прошу прощения... на работе обгуглился как бешеный, объяндексовался по сабжу... домой пришел, написал этот пост и случайно наткнулся в доках по постгре на такой вот способ:
Код:
SELECT id, answer FROM table WHERE id <> '[ID уже имеющегося вопроса]' ORDER BY RANDOM() LIMIT 4
Пишут, что при огромном количестве записей (более 500 000) подтормаживать начинает. Но у меня в каждой категории вопросов не больше 1 500, так что, скорее всего, проканает. Пойду тестировать.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Тут кагбэ надо понимать, что у такого запроса план может быть только один: Seq Scan -> Sort -> Limit

Но на маленьких объёмах данных это несущественно, да.
 
Сверху