Ответ
Используй батчинг — группируй несколько запросов в один. Например, в PostgreSQL с pgx:
batch := &pgx.Batch{}
for _, item := range items {
batch.Queue("INSERT INTO table (col) VALUES ($1)", item.Value)
}
results := conn.SendBatch(ctx, batch)
defer results.Close()
Оптимизации:
- Транзакции — оборачивай операции в транзакцию
- Подготовленные запросы — используй
Prepareдля повторяющихся запросов - Параллелизм — применяй worker-пулы для параллельных записей (но осторожно с конкурентностью в транзакциях)
- Индексы — временно отключай индексы при массовой вставке, затем включай обратно
Для больших объемов данных рассмотри инструменты вроде COPY (PostgreSQL) или bulk-insert.