2014-07-24 2 views
1

이것은 단순히 호기심에 관한 질문입니다. 나는 그것을 평가하지 않고 특정 쿼리 세트를로드하는 스크립트를 가지고 있으며 count()을 프린트한다. 잠재적으로 시간이 걸릴 수있는 크기에 따라 계산을 완료해야한다는 것을 이해하지만 빈 쿼리 세트의 수로 0을 반환하는 데 분당 이 걸렸습니다. 왜 그렇게 오래 걸리는 거죠? 장고 또는 내 서버입니까?Django가 느린 이유

메모 :

queryset은 모두 하나의 유형입니다.

답변

2

모두 실행중인 쿼리에 따라 다릅니다. 행 수가 10 개인 테이블에 SELECT COUNT(*) FROM foo을 실행하면 매우 빠릅니다. 그러나 쿼리에 12 개의 조인, 하위 선택, 인덱싱되지 않은 행에 대한 필터 또는 대상 테이블에 많은 행이있는 경우 쿼리에 임의의 시간이 걸릴 수 있습니다. 모든 병목 현상에서 병목 현상은 Django가 아니라 (ORM에 몇 가지 단점이 있지만) 데이터베이스와 쿼리가 있습니다. 기준에 맞는 행이 없기 때문에 데이터베이스가 테이블의 다른 행을 처리 할 필요가 없다는 것을 의미하지는 않습니다.

+0

그건 의미가 있습니다! QS가 비어 있더라도? –

+0

쿼리 집합과 관련이 없습니다. 전화 번호부를 통해가는 것에 대해 생각해보십시오. 전화 번호 901-555-1281을 찾을 수는 있지만 찾을 수는 없습니다. 그러나 와이오밍 주 샤이엔 (Cheyenne, Wyoming) 전화 번호부를보고 있다면 뉴욕의 전화 번호부를 보는 것보다 훨씬 빠를 것입니다. '쿼리 세트'가 모두 비어 있더라도 말이죠. – syrion

+0

좋아요, 내 쿼리가 매우 복잡하기 때문에 제가 간단하게 만들 수 있고 유사한 결과를 얻을 수 있는지 알게 될 것입니다. 고맙습니다! –

관련 문제