我有一个有 4 列(1 PK)的表,我需要从中选择 30 行。在这些行中,两列(A 列和 B 列)必须存在于另一个表中(8 列,1 PK,2 列是 A 和 B)。
第二个表很大,包含数百万条记录,这足以让我知道是否存在包含 col 值的单行。第一张桌子的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_1 的 n 行,其中2 列存在于Table_2的记录中
谢谢