Встречается на собеседованиях • сегодня

Как оптимизировать медленные запросы на вставку в БД после добавления индексов

Используйте batch-вставки вместо одиночных INSERT. Например, в JDBC:

java
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
try (Connection conn = dataSource.getConnection();
     PreparedStatement ps = conn.prepareStatement(sql)) {
    
    conn.setAutoCommit(false);
    
    for (User user : users) {
        ps.setString(1, user.getName());
        ps.setString(2, user.getEmail());
        ps.addBatch();
        
        if (i % 1000 == 0) { // Периодически выполняем
            ps.executeBatch();
        }
    }
    
    ps.executeBatch(); // Оставшиеся записи
    conn.commit();
}

Другие методы:

  • Временное отключение индексов перед массовой вставкой
  • Использование COPY вместо INSERT (PostgreSQL)
  • Увеличение размера batch-блоков (1000-5000 записей)
  • Оптимизация структуры индексов (удаление избыточных)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы