Django에서 쿼리 크기 최적화

4140 단어 djangodatabasequeries

문제



프로젝트가 커지면 시간이 지남에 따라 점점 더 많은 필드가 포함된 모델을 갖게 될 가능성이 있습니다.
그 결과는 무엇입니까? 음, 30개 이상의 필드가 있는 모델이 있고 데이터베이스에서 개체 또는 개체 목록을 검색하려고 하면 반환queryset이 정말 무거워질 것입니다.
그리고 모든 필드가 확실히 필요하지 않을 수도 있습니다.

쿼리를 최적화하는 방법은 무엇입니까?



Django는 필드 목록과 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 방법도 있는데, 이 방법은 특정 쿼리에서 사용하지 않으려는 필드를 제거하는 데 사용할 수 있습니다.
다음으로 User 테이블에 name , emailbio 필드만 있는 경우 이 두 쿼리는 동일합니다.

users = User.objects.only('name', 'email').all()

users = User.objects.defer('bio').all()


bloggu.io을(를) 사용하여 게시된 기사. 무료로 사용해 보세요.

좋은 웹페이지 즐겨찾기