Back to questions
СБЕР
Senior
5
Как ускорить операции изменения данных в таблице с миллионом пользователей, из которых активных только тысяча?
Companies where asked
Answer from AI
sobes.tech AI
Чтобы ускорить операции изменения данных в таблице с миллионом пользователей, из которых активных только тысяча, стоит сфокусироваться на оптимизации именно для активных пользователей:
- Используйте индексы по полям, которые позволяют быстро находить активных пользователей (например, индекс по полю
active = true). - Выполняйте обновления только по отфильтрованному набору активных пользователей, чтобы не трогать всю таблицу.
- Рассмотрите возможность партиционирования таблицы, выделив активных пользователей в отдельный партицион или таблицу.
- Используйте пакетные обновления (batch updates), чтобы уменьшить количество транзакций.
- Если возможно, применяйте ленивые обновления или обновляйте данные асинхронно.
Пример на SQL:
UPDATE users
SET last_login = NOW()
WHERE active = TRUE;
В Java можно использовать batch update с JDBC:
String sql = "UPDATE users SET last_login = ? WHERE id = ?";
try (PreparedStatement ps = connection.prepareStatement(sql)) {
for (User user : activeUsers) {
ps.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
ps.setLong(2, user.getId());
ps.addBatch();
}
ps.executeBatch();
}