mySQL - одна гигантская таблица или сотни маленких?

Дано:

  1. Сайт по изучению иностранных языков.
  2. Тысячи пользователей и растёт
  3. 7 поддерживаемых языков и они добавляются
  4. Для каждого языка есть словарь на сотни тысяч слов. Слова лежат в таблицах dictionary_en (последние две буквы префикс языка), где две колонки `id` и `word` (собственно само слово)

Требуется: Организовать хранение личных словарей для пользователей (переводов слов).

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

Если я все переводы всех пользователей буду хранить в одной таблице, то боюсь, что она будет просто огромных размеров и выборка из неё будет отжирать кучу времени.

Если я под каждую пару языков буду создавать таблицу, то утону в их количестве. К примеру для перевода с английского на русский таблица vocabulary_en-ru, на француззский vocabulary_en-fr, и так по 7 таблиц на каждый из 7 языков. В итоге количество таблиц будет увеличиваться геометрически...

Подскажите пожалуйста какой вариант выбрать? Или может я в упор не вижу более элегантной реализации без ударений в обе крайности? Буду благодарен за любые мысли по этому поводу.


Ответы (1 шт):

Автор решения: Егор Банин

Одна таблица выглядит более привлекательным решением, а если будет большая то поделите на партиции. Это почти то же самое, что вы хотите сделать, только автоматически. У вас будто одна таблица, а на самом деле несколько (грубо говоря).

→ Ссылка