最近常被提醒的一個低級錯誤就是用for迴圈以ID去查詢多筆資料。
例如以Go表示如下:
for _, id := range ids {
result, err := repo.GetById(id)
// ...
}
最近連續犯了三次這個錯誤吧,老是忘記應該用WHERE id IN :ids
一次查詢出多筆ID的資料後再於程式中做比對整理或後續處理。
例如以Go表示如下
results, err := repo.GetByIds(ids)
// ...
應該避免用for迴圈一次一次用ID去查,例如10筆ID就得進行10次查詢,效率上肯定比1次查詢差。這通常發生在查詢被參照的子表資料且無法用JOIN
的情況,例如查詢10位員工的投保紀錄。
沒有留言:
張貼留言