4 列 (1 PK) のテーブルがあり、そこから 30 行を選択する必要があります。これらの行のうち、2 つの列 (列 A と B) は別のテーブルに存在する必要があります (8 つの列、1 つの PK、2 つは A と B)。
2 番目のテーブルは大きく、何百万ものレコードが含まれており、col の値を含む行が 1 つでも存在するかどうかを知るだけで十分です。1テーブル目のAとB。
以下のコードを使用しています。
query = db.Session.query(db.Table_1).\
filter(
exists().where(db.Table_2.col_a == db.Table_1.col_a).\
where(db.Table_2.col_b == db.Table_2.col_b)
).limit(30).all()
このクエリは私が望む結果を取得しますが、機能するa limit
条件を暗示したり、.exists()
select 1
select *
exists() does not accept a .limit(1)
テーブル全体を検索しないように制限を設定して、このクエリの実行を高速化するにはどうすればよいですか?
- Table_2のレコードに2 つの列が存在するTable_1 からn 行が必要です
ありがとうございました