
Django のパフォーマンス
クエリ最適化、N+1 問題、データベースインデックス、connection pooling、プロファイリング、モニタリング
24 面接問題·
Senior
1Django ORM のクエリに関連する最も一般的なパフォーマンスの問題は何ですか?
1
Django ORM のクエリに関連する最も一般的なパフォーマンスの問題は何ですか?
回答
N+1 問題は Django ORM で最も一般的なパフォーマンスの問題です。最初のクエリで N 個のオブジェクトを取得し、その後関連オブジェクトを取得するために追加で N 回のクエリが実行されるときに発生します。たとえば、記事を反復処理してその著者にアクセスすると、1 回の結合クエリではなく記事ごとに 1 回ずつクエリが生成されます。
2ForeignKey リレーションで N+1 問題を解決するにはどのメソッドを使用すべきですか?
2
ForeignKey リレーションで N+1 問題を解決するにはどのメソッドを使用すべきですか?
回答
select_related() は ForeignKey および OneToOneField リレーションで N+1 問題を解決する適切なメソッドです。SQL の結合を実行し、関連オブジェクトを 1 回のクエリで取得します。prefetch_related() は ManyToMany リレーションや逆参照リレーション(ForeignKey reverse)に使用されます。
3select_related() ではなく prefetch_related() を使用すべきなのはどんなときですか?
3
select_related() ではなく prefetch_related() を使用すべきなのはどんなときですか?
回答
prefetch_related() は ManyToMany リレーションと逆参照リレーション(ForeignKey reverse)のために設計されています。SQL の結合を行う select_related() とは異なり、prefetch_related() は別のクエリを実行して結合を Python 側で行います。これにより、many-to-many リレーションで SQL 結合を行ったときに発生するデータの重複を回避します。
4
Prefetch() を使って prefetch_related() のクエリをカスタマイズするにはどうすればよいですか?
5
フィールドにデータベースインデックスを追加する主な利点は何ですか?
+21 面接問題
その他のDjango面接トピック
Pythonの基礎
Junior
25問Python オブジェクト指向
Junior
20問Django の基礎
Junior
20問Django Models - 基礎
Junior
22問Django ビュー
Junior
20問Django テンプレート
Junior
18問Django フォーム
Mid-Level
22問高度なQuerySet
Mid-Level
25問Django 認証
Mid-Level
22問Django ミドルウェア
Mid-Level
18問Django Admin
Mid-Level
20問Django REST Framework
Mid-Level
30問Django シグナル
Mid-Level
18問ファイルアップロード
Mid-Level
20問Django キャッシュ
Mid-Level
20問Django セッション
Mid-Level
18問Django のメール
Mid-Level
18問Django のテスト
Mid-Level
22問Django のセキュリティ
Mid-Level
22問Django のデプロイ
Mid-Level
24問Django ORM 上級
Senior
28問Django & Celery
Senior
22問Django Channels
Senior
24問Django & GraphQL
Senior
24問Django & Docker
Senior
20問マイクロサービスエコシステムにおけるDjango
Senior
24問カスタムDjangoコマンド
Senior
18問Django の国際化
Senior
20問Django デザインパターン
Senior
24問Django Async と ASGI
Senior
26問Settings と本番環境の設定
Senior
22問オブザーバビリティとモニタリング
Senior
24問