Одна из самых частых ошибок при работе с GORM выглядит так:
for _, user := range users {
db.Create(&user)
}
Если в массиве 10 000 элементов, приложение отправит 10 000 отдельных INSERT-запросов.
✅ Гораздо эффективнее вставлять записи пачкой:
db.Create(&users)
GORM автоматически разобьёт данные на батчи, если это потребуется.
💡 Если же размер батча нужно контролировать самостоятельно, используйте CreateInBatches:
db.CreateInBatches(users, 1000)
Например, при 10 000 записей и размере батча 1000 будет выполнено всего 10 INSERT-запросов вместо 10 000.
Размер пачки зависит от объёма данных, но на практике чаще всего используют значения от нескольких сотен до пары тысяч записей.
Batch Insert уменьшает количество сетевых запросов, снижает нагрузку на базу данных и значительно ускоряет массовую загрузку данных практически без изменений бизнес-логики.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoToProduction