for文の中でSQLを回してしまう事でアプリのパフォーマンスを落としてしまうn+1問題と呼ばれる処理。 解決するためにはデータをチャンクして処理する必要がある。あまり上手く書いてるコードと出会った事が無くて苦手意識があったのだけど、今日シンプルなのと出会ったのでスニペットとして覚えておこう。 言語はGoで。
const maxCount = 1000 for i := 0; i < len(target); i += maxCount { j := i + maxCount if len(target) < j { j = len(target) } subTarget := target[i : j] executeSQL(subTarget) log.Print("execution finished [" + strconv.Itoa(i) + "-" + strconv.Itoa((i + len(subTarget))) + "]") }