예 :한계/오프셋 선택으로 select_related를 최적화하는 방법은 무엇입니까?
# consider the following query run in a loop
q = Users.objects.all().select_related('profile', 'address')[start:start+batchsize]
# assume start == 1,000,000 and batchsize == 1000
print q.query
SELECT ... LEFT OUTER JOIN profile ... LIMIT 1000 OFFSET 1000000;
문제 :
여기 select_related 그렇지 않으면, 장고는 것 때문에 내 쿼리 속도를 사용하여 별도의 DB는 나중에 그들에 액세스 할 때 프로필/주소 (및 다른 많은 테이블)을 얻기 위해 호출 루프. 그러나 OFFSET이 클 때 반복의 시작 속도가 빨라지지만 실제로는 느려집니다.
1) 다른이 문제가 발생 했습니까? 2) 장고에이 문제를 해결할 수있는 임시 해결책이 있습니까?
나는 이것이 MySQL 쿼리 엔진에 문제가 있다고 의심하지만 단지 MySQL에서 쿼리 최적화 프로그램을 돕기 위해 내 장고 코드를 구조화 할 수 있는지 알고 싶습니다.
감사합니다.
실제로 물체를 "q"로 수화해야합니까? 아니면 정말로 특정 가치가 필요합니까? 객체 대신 values_list를 반환하여 반환되는 것과 같습니다. – Brandon