정렬 :여러 쿼리 대 수동으로 같은 모델의 하나 개의 큰 쿼리 (AppEngine에 NDB)
class Thing(ndb.Model):
visible = ndb.BooleanProperty()
made_by = ndb.KeyProperty(kind=User)
belongs_to = ndb.KeyProperty(kind=AnotherThing)
은 기본적으로 그래서 나는 또는 내장 사용할 수없는 다른 속성을에 '또는'쿼리를 수행하지만, 비교 ... visible
이 True
또는 visible
으로 설정되어있는 Thing
(모두 특정 AnotherThing
에 속함)이 False
이고 made_by
이 현재 사용자가되고 싶습니다. ,
쿼리가 모든 것을 얻을 즉 : 데이터 저장소에 덜 까다로운 것
(즉, 재정적으로 적은 비용)Thing.query(Thing.belongs_to == some_thing.key)
을하고 눈에 보이는 것들을 저장, 결과를 반복하고, 때로 믿을 사람 보이지 않지만 현재 사용자가 만든거야?Thing.query(Thing.belongs_to == some_thing.key, Thing.visible == "True")
과 같이 현재 사용자가 보이지 않는 것을 얻으려면 즉,Thing.query(Thing.belongs_to == some_thing.key, Thing.visible == "True")
을 쿼리하고 따로 쿼리하십시오 :Thing.query(Thing.belongs_to == some_thing.key, Thing.visible == "False", Thing.made_by = current_user)
? 나는 많은 데이터 저장소의 읽고 생각 -
번호 1. 다른 사용자가 Thing
보이지 않는의 같은 많은 불필요한 결과를 얻을 것? 2. 두 개의 전체 쿼리가 있는데, 불필요하게 무거운 것일 수도 있습니다. 맞습니까? 나는 데이터베이스와 어떤 종류의 상호 작용이 어떤 종류의 비용을 야기하는지 아직도 고민하고있다.
필요한 경우 ndb, tasklets 및 memcache를 사용하고 있습니다.
왜 OR을 사용할 수 없습니까? –