저는이 작업을 위해 스키마를보다 효율적으로 구성 할 수 있다고 생각합니다. 예를 들어, 도시를 선조로 만들고, 도시 이름이나 다른 고유 한 도시 ID를 사용하고, 다음으로 지구 이름을 사용하십시오. 각 지구가 검색 속도를 위해 도시를 중복 기록 할 수 있도록 스키마를 비정규 화하십시오.
그러나 이러한 최적화가 진행되는 데있어 다른 문제가있을 수 있습니다. 그것은 그 이름의 지역이 그 도시에없는 경우 비어 목록을 반환, 그렇지 않으면 아마도 (A 내에서 지역 이름을 단일 항목 가정 한 - 경우 성능은
def fetch_district_in_city(city, district_name):
query = District.query(ndb.AND(District.name == district_name,
District.key.IN(city.districts)))
return query.fetch()
는 상당히 잘 작동 할 수 있습니다, 당신을 위해 만족 도시는 유일하다).
난이 (내가 위에서 언급 최적화 대안과 비교)을 완전히 충족 될 가능성을 고려하지 않는 이유는 https://cloud.google.com/appengine/docs/python/ndb/queries#neq_and_in에 설명 된대로 OR
및 ==
검사의 많은에 IN
방법 "폭발", , 지구가 많은 도시. 따라서 앱의 성능이 저하 될 수 있으며, 위에서 언급 한 최적화 (특히 키에 의존하는 앱, 매우 빠른 & light)를 사용하여 매우 가벼운 애플리케이션의 커튼 뒤에서 수행하는 작업량이 줄어들 수 있습니다.).
지구의 이름이 'Foo'인 특정 도시 기록을 원하십니까? – Anzel