[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка с условием
Dimaz
Приветствую. Есть запрос, выдающий случайный вопрос клиенту функцией ORDER BY RAND(). Задача такая. После каждого ответа, следующая случайная выборка должна игнорировать вопросы, которые уже были. Каким образом это можно сделать? При чем для каждого пользователя в отдельности.
Hello
Сохранять уже заданные вопросы в отдельной таблице.

_____________
VPS от 5$, первые 2 месяца - бесплатно.
Placido
Добавлять id вопросов в сесиию или куку?
Dimaz
Цитата
Сохранять уже заданные вопросы в отдельной таблице.

Как именно сохранять? Для каждого пользователя отдельную таблицу, или через запятую? Пользователей планируется очень много, до миллиона.
И как потом делать выборку на основании всех этих данных?
Dimaz
Цитата
Добавлять id вопросов в сесиию или куку?

Так это только для одного сеанса, а в другие дни?
Hello
Цитата (Dimaz @ 5.03.2013 - 14:43)
Как именно сохранять?

Таблица с 2мя столбцами - id ползователя, id вопроса который был задан.
Заброс будет
SELECT * FROM quest 
WHERE quest.id NOT IN
(SELECT questid FROM user_quest
WHERE userid = $userid)
ORDER BY RAND();


_____________
VPS от 5$, первые 2 месяца - бесплатно.
Dimaz
Цитата (Hello @ 5.03.2013 - 12:33)
Цитата (Dimaz @ 5.03.2013 - 14:43)
Как именно сохранять?

Таблица с 2мя столбцами - id ползователя, id вопроса который был задан.
Заброс будет
SELECT * FROM quest 
WHERE quest.id NOT IN
(SELECT questid FROM user_quest
WHERE userid = $userid)
ORDER BY RAND();

Может какое-нибудь другое решение есть. По мере существования сайта количество вопросов будет расти и может достигнуть пару тысяч. Сервак будет очень долго думать.
Hello
Dimaz
В моём запросе, при использовании индексов, тормозить нечему.
Когда будет 10 млн вопросов, тогда будете оптимизировать

_____________
VPS от 5$, первые 2 месяца - бесплатно.
Dimaz
Цитата (Hello @ 5.03.2013 - 14:35)
Dimaz
В моём запросе, при использовании индексов, тормозить нечему.
Когда будет 10 млн вопросов, тогда будете оптимизировать

Спасибо:)
innovate
Цитата
Когда будет 10 млн вопросов, тогда будете оптимизировать

ORDER BY RAND()
10.000 записей: 0:18.684s
100.000 записей: 2:59.081s
1.000.000 записей: 58:20.000s

Link
Статистика по времени запроса в конце темы.(делаем поблажку на 2007 год);
Valick
я использую другой подход,
а тут надо проверить на сколько корректно отработает запрос например с такими данными
меня лично смущает привязка к max(id)
id = 1
id = 10
id = 100
id = 1000
id = 10000

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

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