날짜가있는 고유 레코드가 포함 된 장고 모델이 있습니다. 현재 기록을 일 단위로 계산하고 있습니다 (예 : X 번호가 이미 오늘 날짜로 전달되고, X가 다음 10 일 이내에 발생하고, X가 다음 30 일 이내에 발생합니다. 아래 코드는 현재 사용하고있는 것으로, 모델에 대한 records.objects.all() 쿼리에서 모든 값을 다시 가져온 다음 각 개체를 반복하여 datetime 델타를 계산하고 관련 카운터를 증가시킵니다.일짜의 날짜/시간 diff의 실행자 계산
이 내가 좋아하는 것보다 더 이상 5-6 초 정도 걸립니다 약 50,000 레코드for x in records:
if x.date is None:
missingValue += 1
else:
delta = x.date - date.today()
if delta.days < 0:
passed += 1
if delta.days < 10:
tenDays += 1
if delta.days < 30:
thirtyDays += 1
, 내가 기록의 수가이 감소 노력하고있어 증가 할 가능성이있다. 질문은 실제로 datetime diffs의 성능 계산과 Django Query 또는 다른 방법을 통해 더 나은 방법이있는 것처럼 결과 일 수를 그룹화하는 것입니다. 시도하지 못했던 다른 방법을 찾았습니다.
원시 SQL에서 DateAdd를 사용하는 방법을 살펴 보았지만 각 날짜 범위에 대해 데이터베이스를 쿼리해야 할 필요가있는 것처럼 보였으 나 결과를 반복해야했습니다.
데모 샘플 데이터를 원하는 출력 http://www.rextester.com을 준비하시기 바랍니다. 순수한 SQL에서는 1 초 미만의 시간을 얻을 수 있다고 확신합니다. – lad2025
http://rextester.com/AWPX46055 - 그럴 권리가 있다고 생각하십시오. 원하는 결과물은 위의 그룹에 의한 숫자의 반환 일 뿐이며 30 일 이내에 10 일 이내에 전달됩니다. 나는 또한 30 일이 넘는 것에 대한 미래의 필요성을 안다. 내부 날짜는 누적됩니다. – Draineh
샘플 데이터를 보내 주셔서 감사합니다 – lad2025