вопрос будет ли это более оптимизировано в конечном итоге? ведь если у нас будет 100к пользователей и на каждого будет приходиться по 10к записей, не загнется ли MYSQL от этого добра?
Это уже вопрос не столько про то, как правильно хранить данные, сколько про возможности MySQL.
100к*10к = 1млрд., при таком объёме данных всё зависит от уровня (скилла) администратора MySQL. Чисто гипотетически - должно работать, на практике, когда MySQL разрастается до очень больших масштабов - может случиться что угодно, в т.ч. могут посыпаться ключи/связи, индексы и т.д., и даже лучшие специалисты из профильных компаний помочь в этом случае смогут не всегда.
Но, можно сказать, однозначно, что:
а) При таких объёмах данных и кол-ве пользователей, это будет как минимум очень неплохая соц. сеть (подающая надежды) или проект подобного масштаба и бюджет позволит нанять хороших спецов для обслуживания БД такого рода
б) JSON с такими объёмами "загнётся" куда быстрее чем база. Особенно это касается JSON'а в MySQL, который представляет из себя исключительно текстовое поле (в отличии PostgreSQL например), которое
НЕ индексируется как JSON.
P.S. Вообще, MySQL не очень любит большой объём данных в одной колонке. К сожалению, не могу сказать с чем именно это связано, т.к. детально вопрос не изучал, но личные тесты (тесты проводимые лично, для самого себя, без какого либо намёка на их объективность или истину в последней инстанции) говорят именно об этом.
P.P.S. Попробуйте так же посмотреть в сторону таких движков, как например
ARCHIVE. Я лично пробовал такой движок всего однажды и подробностей озвучить не могу, но чисто логически, он как раз предназначен для подобных задач, хранения "архивной" информации.