【问题标题】:Pyodbc and AWS LambdaPyodbc 和 AWS Lambda
【发布时间】: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


【解决方案1】:

原来这是我的 SQL Server 表 hub_notification_log 的问题。查询数据的 AWS 用户账户无法访问该表,我最终不得不创建一个具有类似结构的新表并重新应用 AWS 用户账户的权限。我不完全确定这两个表和权限之间的区别是什么,但它现在似乎运行良好。感谢@mechanical_meat 的洞察力并试图帮助我。我很感激!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 2017-01-28
    • 2017-11-04
    • 2018-03-08
    • 2016-06-23
    相关资源
    最近更新 更多