網頁

2023/6/17

SQL 程式中如何有效查詢多筆ID資料?

最近常被提醒的一個低級錯誤就是用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位員工的投保紀錄。


沒有留言:

張貼留言