# gqlgen-Dataloader-初探 ## 什麼是dataloader 中文名稱 數據加載器 解決一些重複Query的問題 小至重複三五次 大到重覆幾百次 若是每次都查詢一樣的東西 除了在sql上加上cache以外 也可以將數據蒐集起來再做一次query 避免大量query的窘境 ## N+1 problem 情境: 若是有一個Graphql 需要 `user` 以及 `user'post` 當這個例子需要 user list and post list 的時候 `user` list 的sql: ```sql= select id, name, telephone from user where id in (?,?,?,?,?) ``` `user'post` list sql: ```sql= select id, title, content from post where user_id = ? select id, title, content from post where user_id = ? select id, title, content from post where user_id = ? select id, title, content from post where user_id = ? select id, title, content from post where user_id = ? ``` 就會變成有幾個user做幾次query 看到這裡 你的心裡也會覺得 為何不能將這些ID蒐集起來再做一次query example ```sql= select id, title, content from post where user_id in (?,?,?,?,?) ``` 而dataloader就是為了解決sql效能上的問題而出現的 將需要query的id`蒐集`起來 ## 如何使用gqlgen的dataloader ## 如何在dataloader塞入不同的條件 --- 來源: https://gqlgen.com/reference/dataloaders/