BonBonSlick
@BonBonSlick
Vanilla Web Architect

Выбрать по юзера по последней связанной сущности?

User --> --> Email
У юзера много емейлов.
Активный емейл тот, который был добавлен последним, поле createdAt.

1 - выбрать юзера с активным емелом
2 - выбрать всех юзеров с активными емейлами
  • Вопрос задан
  • 30 просмотров
Решения вопроса 1
BonBonSlick
@BonBonSlick Автор вопроса
Vanilla Web Architect
В общем, плохая затея, надо делать подзапросы.
У юзера может быть много емейлов.
Для проверки занят ли емейл необходмо делать подзапрос, сортировать по email.createAt DESC LIMIT 1 для каждого юзера что создает огромную нагрузку.

Решил добавить поле $isActive, последний емейл который был выставлен будет $isActive = true.

Тогда можно избежать допольнительных подзапросов и делать выборку

join user_emails .... where user_emails.isActive = true.

У юзера может быть активно 2 емейла, один основной и второй бекап, поетому когда проверка на доступность емейла беруться так же и бекап емейлы.

Старые емейлы нужны для логирования. на случай утраты доступа, облегчение восстановления аккаунта.
Хотя это добавила все же некотоырй оверхед, надо обновлять предыдущий емейл.
Если юзер уже исопльзовал емейл, то использовать его заменив $$isActive
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы