【发布时间】:2021-05-13 21:42:38
【问题描述】:
我有一个相当简单的 SQL 查询,它在我的 Lambda 函数中运行很长时间,我不知道为什么。我知道OR 语句可能是 SQL 中的杀手,但在我的数据库编辑器中,它运行大约 800 毫秒。为什么 Lambda 函数需要更长的时间?
我正在使用 cursor.execute() 并传递 SQL 语句。
SQL查询:
select *
from dbo.housing
where App_date >= (select notification_date from dbo.hub_notification_log where object_name = 'HOUSING_ASSIGN')
or Application_Complete >= (select notification_date from dbo.hub_notification_log where object_name = 'HOUSING_ASSIGN')
or Application_Cancel_Date >= (select notification_date from dbo.hub_notification_log where object_name = 'HOUSING_ASSIGN')
or MoveIn_Date >= (select notification_date from dbo.hub_notification_log where object_name = 'HOUSING_ASSIGN')
or Check_Out >= (select notification_date from dbo.hub_notification_log where object_name = 'HOUSING_ASSIGN')
任何见解将不胜感激!
【问题讨论】:
-
我不知道您使用的 RDBMS 的引擎/解析器是否足够聪明,可以识别所有这些子查询都是相同的。如果不是,您可以尝试只使用一个为其结果分配别名的子查询——如果您的 RDBMS 允许,在 SELECT 子句中,然后将所有其他日期与结果进行比较。
-
@mechanical_meat - 这是一个有效的观点;但是,让我感到困惑的是,它在 800 毫秒内在 SSMS 中运行。我认为这个问题与 pyodbc 或 AWS 平台有关。
标签: python sql aws-lambda pyodbc