エンティティの属性の現在の値は、そのエンティティのEntityHistoryテーブルstatus
の最新のエントリとして照会できます。つまり、
Entities (id) <- EntityHistory (timestamp, entity_id, value)
N+1 クエリを実行することなく、すべてのエンティティの履歴テーブルから現在の値を熱心にロードする効率的な SQLALchemy 式を作成するにはどうすればよいですか?
モデルのプロパティを書き込もうとしましたが、これを繰り返すと (N+1) ごとにクエリが生成されます。私の知る限り、サブクエリなしでこれを解決する方法はありませんが、データベースではまだ非効率的です。
サンプルEntityHistory
データ:
timestamp |entity_id| value
==========|=========|======
15:00| 1| x
15:01| 1| y
15:02| 2| x
15:03| 2| y
15:04| 1| z
したがって、エンティティ 1 の現在の値は にz
なり、エンティティ 2 の現在の値は になりますy
。バッキング データベースは Postgres です。