N+1 — это когда ты делаешь один запрос за списком сущностей, а потом для каждой сущности ещё по одному запросу за связанными данными. Получаешь 1 + N запросов вместо одного-двух. Например, достал 100 заказов, а потом для каждого отдельным запросом тянешь юзера — это 101 запрос вместо одного с JOIN. В Go это встречается реже, чем в ORM-фреймворках, потому что ты сам пишешь SQL. Решение — JOIN, подзапрос или batch-запрос с WHERE id IN (...). В нашем проекте CheckAlreadyAppliedBatch — как раз пример решения N+1: один запрос вместо проверки каждой вакансии по отдельности.
Что такое N+1 проблема?
Middle
1.3k просмотровAFK Offer AI
Как работает оператор select?