Person
は、Building
を有する。SQLAlchemyでコレクションのサイズが0か空であるかどうかを確認するクエリ?
Person
は、私が彼らのgroups
コレクション内の任意のGroup
を持っていない特定のbuilding
からpeople
のすべてを返すようにしたいGroup
多く持っています。
おそらく長さが0のグループリストを持っている人で検索できますか? のような何か:
unassigned=Person.query.filter(Person.building==g.current_building,Person.groups.any()).all()
この機能は「高価」なのですか? – Johnston
私はそれが高価になるとは考えていませんが、よくあることですが、それは依存します。データ密度、データベースインデックス、RDBMS自体によって、他のソリューションより速くて遅くなる場合があります。 'any'はサブクエリを生成しますが、SQLの「良い」部分ではありませんが、ここではSAがユーザから隠しているものです。 – van
5Gbのsqliteデータベースの私の同様のケースでは、外部結合を使うのが100倍以上高速です( 'any()'バージョンが終了するのを待たずに) 'any()'としています: 'session.query( Ebook.id).outerjoin(Sentence).filter(Sentence.id == None) ' – Eponymous