Djangoのモデルレイヤ最適化
まず、私の究極の目標は、私はこのシリーズを見てあなたには、いくつかの有用な要素を表示することができますが、いくつかの要素は、私は、レコード全体ではなく、プロジェクトのコレクションを記録する必要があるノートです、PythonDjango +キャンパスのマイクロチャネルのアプリケーションアプレットを開発することです。
Djangoのモデルレイヤ変更および移行:
-
makemigrationのAPPNAME
-
データベースを実行する移行
-
SQL文の実装を参照するにはselmigrate appnameの0014(20)
-
showmigrationのappnameの変更履歴の表示アプリケーションと移行の歴史
Djangoのモデル層 - 遅延ロード、プリロード
Djangoの層の最適化モデル(ロングリンク)
Djangoのデータベースモデル層プラクティス
-
インデックスの適切な使用
- インデックスは、インデックス付きの列でなければなりません
- インデックスは、列をインデックス化するべきではないではありません
-
使用イテレータイテレータ反復クエリセット
- クエリセット、非常に大きな、イテレータはメモリを保存するとき
-
プロパティキャッシュオブジェクトを理解します
- プロパティ呼び出すことはできません。これは、デフォルトのデータが外部キーが含まれていないです
- 呼び出し可能なプロパティ:それは外部キー、データ、および多くに多く、関数呼び出しであってもよいし、
- 再び呼び出されたときに呼び出し可能なPythonのは、変数に割り当てられた属性は、データベースを呼び出す必要はありませんが、(パフォーマンスを向上させるために)データPythonの変数を呼び出すことができます
-
データベースを作成するデータベースの作業
- フィルタ:除外し、フィルタ属性
- 重合:機能の注釈を使用して重合
- 必要な場合には、ネイティブSQLを使用します
-
データを取得する権利
- フィールドが使用インデックス検索され
- ユニークな変更されたフィールド検索の使用
-
不要な検索をしないでください
- 使用クエリセット値()、VALUE_LIST()関数が返す容器のPythonの構造
- 代わりLENのQuerySet.countを(使用してクエリ結果)の長さ(クエリセット)
- 裁判官は、クエリセットならば代わりに)(ヨーヨーQuerySet.existsを空かどうか
-
不要なソートをしないでください
- 不要なソートをしないでください
-
バッチ操作
- 大量のデータ、バルク・オペレーション