Добавить столбец в таблицу 50M + записей? Самый эффективный способ?

0

У меня есть табличные products которые имеют более 50 миллионов записей. Я хочу отслеживать, кто загрузил данный продукт в моей системе, но просто добавление uploaded_by_id к такой огромной таблице - это не те решения, которые я ищу. Что еще, чем таблица соединений, которую я могу создать, чтобы иметь возможность запрашивать продукты, загруженные данным идентификатором в заданном диапазоне времени? Product.where(uploaded_by_id: @user.id, created_at: time_range) - это то, что мне нужно сделать, но мне нужен более эффективный способ.

  • 1
    Пожалуйста, объясните, почему добавление столбца, в котором явно указана нужная вам информация, не является решением, которое вы ищете.
  • 0
    @GordonLinoff, потому что я не могу заблокировать таблицу в течение длительного времени
Показать ещё 1 комментарий
Теги:
performance

2 ответа

0

Вместо того, чтобы касаться основной таблицы, добавьте еще одну таблицу (Вертикальное разделение). Новая таблица будет иметь один и тот же PRIMARY KEY, но не AUTO_INCREMENT. Новый столбец (столбцы) войдет в эту таблицу.

Создавайте строки в новой таблице только тогда, когда новый столбец (столбцы) имеет значение.

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

Когда вам также понадобится новый столбец, используйте LEFT JOIN.

0

Возможно, вы захотите изучить такие инструменты, как

Оба инструмента позволяют изменять таблицы без их блокировки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню