Djangoのクエリサイズを最適化する
問題
プロジェクトが成長すると、時間とともに、より多くのフィールドを持つモデルを開始することが可能です.
何がその結果ですか?あなたが30以上のフィールドを持つモデルを持っていて、データベースからオブジェクトまたはオブジェクトのリストを取得しようとしているならば
queryset
本当に重いです.そして、あなたは間違いなくすべてのフィールドを必要としない可能性があります.
どのようにクエリを最適化するには?
ジャンゴが提供する
only()
を返すメソッドqueryset
フィールドのリストとonly(*args)
.という.
以下に例を示します:
from django.db import models
class User(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField(max_length=254)
bio = models.CharField(max_length=50)
def __str__(self) -> str:
return "%s (%s)" % (self.name,
", ".join(profile.first_name for profile in self.profile_set.all()))
そしてここにqueryset
:users = User.objects.only('name', 'email').all()
また、defer()
方法--反対only
-- これは、特定のクエリで使用したくないフィールドを削除するために使用できます.これに続いて、これらの2つのクエリは、
User
テーブルのみname
, email
, and bio
フィールド.users = User.objects.only('name', 'email').all()
users = User.objects.defer('bio').all()
記事投稿bloggu.io . 無料でお試しください.Reference
この問題について(Djangoのクエリサイズを最適化する), 我々は、より多くの情報をここで見つけました https://dev.to/koladev/optimize-query-size-in-django-4nh9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol