GraphQL N+1 Query Problem
GraphQLでN+1クエリ問題が発生した場合の対処法
概要
GraphQLのリゾルバーがネストしたデータを取得する際、親レコードごとにデータベースクエリが発行されてしまうN+1問題です。パフォーマンスに深刻な影響を与えます。
問題の例
| |
# 発行されるSQL(100ユーザーの場合)
SELECT * FROM users; -- 1回
SELECT * FROM posts WHERE user_id = 1; -- 100回
SELECT * FROM posts WHERE user_id = 2;
...
SELECT * FROM posts WHERE user_id = 100;
# 合計101クエリ
解決策
1. DataLoaderを使用
| |
2. Apollo Serverでのセットアップ
| |
3. Prismaでの対処
| |
4. GraphQL Shieldと組み合わせ
| |
5. クエリの複雑度制限
| |
デバッグ方法
| |
関連エラー
関連エラー
GraphQL の他のエラー
この記事は役に立ちましたか?