はい!今やってます!

Work Pertly, Live Idly

n+1問題用スニペット

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))) + "]")
}