У нас есть таблица для хранения логина логина пользователя, user_login_log . Эта таблица получает запись каждый раз, когда пользователь входит в систему.
У нас есть вариант использования, чтобы получить отметку времени последнего входа для каждого пользователя и эти данные будет часто выбираться. Требуется, чтобы эти данные загружались быстро.
Требования
- Данные должны загружаться быстро.
- Данные должны не устареть.
Таблица журналов может содержать десятки тысяч записей, поэтому запросы к ним каждый раз будут медленным процессом. Мы предложили два подхода для быстрого извлечения данных.
Подход 1 : Нашей первоначальной мыслью было использование материализованного представления.
Проблема этого подхода заключается в том, что по мере увеличения данных в таблице user_login_log запрос на обновление sh материализованного представления будет выполняться медленнее, в результате чего выполняются команды INSERT, UPDATE и УДАЛИТЬ операции медленнее.
Подход 2 : Другая идея заключалась в том, чтобы использовать выделенную таблицу снимков для хранения последних данных входа в систему.
И тогда данные будут извлекаться непосредственно из таблицы снимков. Недостатки этого подхода в том, что мы будем поддерживать одни и те же данные в двух таблицах, а функция триггера будет отвечать за поддержание целостности данных.
Какой из этих методов лучше для нашего варианта использования? Есть ли другой метод, который будет более эффективным для фильтрации и извлечения необходимых данных?