我有一个查询,我想加入一个子查询,使用outerjoin
函数调用可以正常工作,问题是发出的查询运行时间为2-3s,而几乎是在显式指定连接时SQL Server控制台中的LEFT HASH JOIN
方法。
有没有办法可以强迫SQLAlchemy发出LEFT HASH JOIN
语句
query = query.outerjoin(sub_query, join_conditions, method='hash')
?我已经尝试在StackOverflow和互联网上的其他地方搜索,但一直无法找到任何相关内容。我正在使用Microsoft SQL Server,如果这与结果有任何关系。
如果因为使用ORM的简单性而牺牲了性能,那么这是一个我很乐意做出的权衡,但显然我不愿意这样做!
答案 0 :(得分:0)
在进一步阅读之后,正如Ilija在评论中提到的,这不是SQLAlchemy目前可能的事情。
但是,同样的读数也表明,在SQL查询上指定连接提示通常应该只是查询优化计划的最后一步 - 例如here。
我没有尝试对我在SQLAlchemy之后的功能进行修补,而是重新检查了我在问题中缩写的join_conditions
的内容,发现通过调整连接逻辑,我可以让SQL Server生成更快的执行计划。