Royal Flash
-=MaestrO=-
В таблице хранится журнал пользовательских настроек. Каждый раз, при смене настройки пользователем, ему в журнал добавляется 1 запись. Этих записей может быть много - до 1000 шт. на 1-го пользователя. Не исключен вариант (для особо быстро меняющих данные пользователей), что разные записи журнала одного пользователя будут иметь одну и ту-же дату, поскольку точность колонки datetime - 1 сек. Можно ли за один запрос выбрать даты последних изменений для 20 пользователей, и если да, то каким запросом?
Таблица users_settings содержит: id (записи журнала), id_user, parameter, last_change_date.
Пробовал так:
SELECT max(id) AS id, id_user, parameter, last_change_date
FROM users_settings
WHERE id_user IN (..., ..., ...)
GROUP BY id_user
Вроде бы работает, но нет уверенности, что id_user, parameter, last_change_date соответствуют max(id)...
Возможно, стоит хранить дополнительно дату последнего изменения настроек в таблице пользователей (id пользователя, last_change_date, ...), чтобы не искать max(id) среди 1000 записей у каждого из 20 пользователей? Или же эти 1000 записей будут находится быстро, благодаря индексам?
Таблица users_settings содержит: id (записи журнала), id_user, parameter, last_change_date.
Пробовал так:
SELECT max(id) AS id, id_user, parameter, last_change_date
FROM users_settings
WHERE id_user IN (..., ..., ...)
GROUP BY id_user
Вроде бы работает, но нет уверенности, что id_user, parameter, last_change_date соответствуют max(id)...
Возможно, стоит хранить дополнительно дату последнего изменения настроек в таблице пользователей (id пользователя, last_change_date, ...), чтобы не искать max(id) среди 1000 записей у каждого из 20 пользователей? Или же эти 1000 записей будут находится быстро, благодаря индексам?