SQL Alchemy not_in() 子查询挂起应用程序,但单独工作

问题描述 投票:0回答:0

我正在使用 python 和 SQLAlchemy。

我有两个查询,都相当简单,每个都涉及大约一百万行:

  • 子查询:从表中获取 ID 列表。此 ID 应被其他查询忽略。
  • query:从第二个表中获取行。它有几个位置,但唯一相关的是一个 not_in 子句:
where(table.c.column.not_in(subquery))

查询是简单的 SQLAlchemy Select 结构,如下所示:

query.Select(table.c.column).where(table.c.column == 'placeholder')

它们在单独执行时都运行良好(并且,对于主要的,当 not_in() 子句被删除时),并在大约 30 秒内完成。

这里是问题所在:当子查询作为主查询的 where 子句的一部分运行时,应用程序冻结并且永远不会完成执行。我让它运行了一个多小时,但它从未完成。

它从不抛出错误,也从不崩溃。它只是永远挂起。

我还尝试将子查询的结果提取到列表中,然后将所述列表传递给 not_in() 函数。当我这样做时,应用程序崩溃了。到目前为止,我还没有任何运气来阐明原因。

我尝试将子查询返回的行数减少为单个行,它似乎有效。因此,结果的大小可能是问题所在。有没有更有效的方法来处理这个操作?

python sqlalchemy freeze notin
© www.soinside.com 2019 - 2024. All rights reserved.