動機 Webサーバーを書いているとしばしばRDBMSのN+1問題に遭遇する 別名ループクエリ あるレコードを取得する際に同時にこのレコードが持つ(has-oneやhas-many関係)のレコードを同時に取得するケースがある user レコードが持つ user_item 一覧を取るなど 親のレコードが複数ある場合、ナイーブな実装をするとループで回して子のレコードをクエリすることになる 大量にSQLが発行されてDBサーバー(場合によってはアプリケーションサーバーも)負荷が増大する GraphQLではこの問題が起こりがち あるresolverに属する子供のresolverが芋づる式に呼ばれる RESTfulや他のRPCサーバーの形態ではループクエリが発生する場所が比較的見えやすいが(一つのエンドポイントで解決するエンティティ一覧が決まっているため)、GraphQLでは見えにくい そこでdatal