Задать вопрос
Ответы пользователя по тегу MySQL
  • Подзапрос в условии ON для LEFT JOIN'а в MySQL

    @bugman
    Если не нравится паттерн с созданием аттрибутов статистики в сущности клиента, попробуйте тогда, в самом простом случае, держать одну таблицу для актуальных значений статистики с PK [user_id, stat_type] + таблицу с историческими значениями (аудит таблицу), которую будете сопровождать на триггерах, в случае изменении первой.

    В еще более хитром случае, эти таблицы можно и объединить (как у вас сейчас — изначально), но для ускорения запросов добавить флаг current, который будет либо 1 либо NULL + составной индекс [current, user_id].
    Геммор триггеров из предыдущего варианта уйдет, заменит его геммор сопровождения флага current.
    Всевозможные варианты организации подобных исторических справочников с "+" и "-" описаны в википедийной статье на тему «slowly changing dimensions».

    Задайте себе вопрос, кроме багтрейсов и редкой аналитики, Вам действительно принципиально гонять запросы на получение и исторических и актуальных данных по одной таблице? Если нет — первый вариант самое то + партицирование и удаление самых старых партиций на шедулере (по вкусу).
    Ответ написан
  • Подзапрос в условии ON для LEFT JOIN'а в MySQL

    @bugman
    Если таблица stats представляет собой slowly changing dimensions и перформанс запроса на получения актуальной статистики важен, я бы подумал о других подходах как например денормализовать stats и хранить актуальные значения статистики в отдельной таблице (или даже у юзера), stats же пользовать как аудит изменений.
    Ответ написан