Как лучше хранить историю отмеченных в тесте вопросов для каждого пользователя?
Есть таблица с вопросами, в которой около 10тыс записей. Есть таблица пользователей, которых порядка 2 тыс. Я хотел бы не показывать пользователю те вопросы, которые он уже проходил. Соответственно мне нужно где-то хранить об этом информацию, но не пойму где.
Если делать таблицу с ответами, то получится около 20 000 000 записей для текущих условий. А если вопросов или пользователей станет в 10 раз больше? Это уже 200 млн строк. Как-то много. Да и как искать вопросы, которые он ещё не прошёл? where in not (id1, id2, ..) - вряд ли.
Может кто сталкивался с подобным? Что-то никак сообразить не могу.
Вам нужно сделать еще одну таблицу и в ней хранить данные о пользователях и вопросах.
Всего 2 поля int - user_id и question_id
Даже 200 млн таких записей, при условии наличия индексов, не создадут существенной нагрузки на систему.
Кстати вы наверное правы. Если будут индексы и всего две колонки, то вполне быстро может работать.
Частично переживаю за задачу, которая может свалиться скопом к этой - хранение динамики ответов, т.е. на такую-то дату, вы дали столько-то правильных ответов. Хотя тут даже проще, лимиты же...
как то вы странно считаете, в таблице вы будете хранить только номера вопросов которые он прошел, то есть т*количество средних пройденных вопросов, если скажем юзеры проходят по сто вопросов это будет всего 200 000 записей
да и даже 20 млн нынче это совсем не много