【发布时间】:2016-09-05 09:40:42
【问题描述】:
我有一个查询,我想加入一个子查询,使用outerjoin 函数调用可以正常工作,问题是发出的查询在 2-3 秒内运行,而当显式指定连接方法时几乎立即运行LEFT HASH JOIN 在 SQL Server 控制台中。
有没有一种方法可以强制 SQLAlchemy 发出 LEFT HASH JOIN 语句,类似于
query = query.outerjoin(sub_query, join_conditions, method='hash')
?我试过在 StackOverflow 和互联网上的其他地方搜索,但找不到任何相关的东西。如果这对结果有任何影响,我正在使用 Microsoft SQL Server。
如果这是为了使用 ORM 的简单性而牺牲性能的情况,那么这是我很乐意做出的权衡,但显然我不想这样做!
【问题讨论】:
-
从阅读源代码看来,目前您所希望的似乎是不可能的。看看
Query._join、Join和编译器的visit_join。扩展这些似乎也是一项艰巨的任务。
标签: python sql sql-server join sqlalchemy