Queryset.exists()가 Queryset.count()보다 효율적인 이유
import models
queryset = models.Hound.objects.filter(is_asleep=True)
if queryset.count() > 0:
return "run away!"
else:
return "coast is clear"
숙련된 Django 개발자는
count() 의 오용에 대해 웃을 수 있습니다. 나는 결코 그런 실수를 하지 않을 것입니다! 문제는 개발자가 섬이 아니라는 것입니다. 시간이 지남에 따라 개발자는 팀을 변경하고 기술 부채가 누적된 브라운필드 코드베이스를 상속하며 주니어 개발자가 작성한 코드를 검토합니다. 따라서 다음이 중요합니다.exists 더 빠르게게시물의 끝에서 이 안티 패턴을 쉽게 찾아 수정하는 방법을 보여 드리겠습니다.
능률
비교
queryset.count()는 확인queryset.exists()보다 덜 효율적입니다. 위의 예는 다음과 같이 읽기 어렵고 덜 효율적인 변형입니다.import models
queryset = models.Hound.objects.filter(pk=1)
if queryset.exists():
return "run away!"
else:
return "coast is clear"
Django docs은 개수만 원하는 경우에는
querySet.count()를 사용하고, 하나 이상의 결과가 존재하는지 확인하려는 경우에만 queryset.exists()를 사용하도록 지시합니다.이 조언이 필요한 이유는
queryset.count()가 합계를 계산하기 위해 데이터베이스 테이블의 모든 행을 스캔하는 SQL 작업을 수행하기 때문입니다. 반면에 queryset.exists()는 단순히 the most optimized way에서 단일 레코드를 읽습니다.select_related 및 distinct를 지웁니다.코드베이스가 queryset.count를 오용하고 있습니까?
시간이 지남에 따라 기술 부채가 코드베이스에 빠져들기 쉽습니다. django.doctor에서 확인하거나 review your GitHub PRs에서 확인할 수 있습니다.

또는 시도해 보십시오Django refactor challenges .
Reference
이 문제에 관하여(Queryset.exists()가 Queryset.count()보다 효율적인 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codereviewdoctor/why-queryset-exists-is-more-efficient-than-queryset-count-2f3h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)