【问题标题】:Access slow when joining on Teradata SQL connections?加入 Teradata SQL 连接时访问速度慢?
【发布时间】:2023-04-03 09:56:01
【问题描述】:

我有一个简单的 Access 数据库,用于创建许多报告。我已链接到我们组织中的 Teradata 数据库服务器,以提取一些额外的员工级别详细信息。员工编号有一个简单的左连接,我所提取的只是姓名和角色。

没有连接的查询可能需要一分钟左右的时间才能运行,并且一旦加载就非常快。左加入 Teradata 连接会减慢一切速度。通过 Excel 运行查询可能需要 10 分钟左右。在 Access 中加载查询时,滚动浏览它非常慢。

我应该注意到 Teradata 服务器没有性能问题。我从相同和不同的表中提取不相关的报告,连接复杂,速度非常快。

我尝试创建一个更简单的查询,几乎没有注意到,但性能问题仍然存在。代码如下:

SELECT EMPL_DETAILS_CURR.NM_PREFX, EMPL_DETAILS_CURR.NM_GIVEN, 
MC.DT_APP_ENTRY, MC.CHANNEL_IND

FROM MC LEFT JOIN EMPL_DETAILS_CURR ON MC.EMP_ID = EMPL_DETAILS_CURR.EMP_ID;

MC 中只有 7000 条记录。

【问题讨论】:

  • 如果您在设计视图中打开 Access 链接表并查看 [EMP_ID] 字段,Access 是否将其识别为已编入索引?

标签: sql performance ms-access teradata


【解决方案1】:

如果您在 MS Access 表和 Teradata 表之间连接数据,则必须使用本地计算机上的 Microsoft JET 引擎完成连接。这意味着您的 Teradata 表中存在的数据将被下载到您的本地计算机,以便可以连接。

如果表都在 Teradata 上并通过 MS Access 中的链接表进行访问,则连接可能仍会在本地进行。我建议将查询作为 ODBC Direct(我忘记确切的术语)查询运行,以便将 SQL 传递给 Teradata 以执行,并在查询完成时将结果返回给 MS Access。

【讨论】:

  • 有些表是本地的。是否有更“有效”的方式将本地 Access 表与 Teradata 表连接起来?我求助于从 Teradata 员工表中下载三个字段,然后将其导入 Access。下载只用了 2 分钟。唯一的问题是数据不是“实时”的。
  • 您必须将 Access 中的数据或您需要的数据移出 Teradata。最有效的方式是在加入之前将所有数据放在一个位置。
猜你喜欢
  • 2012-08-01
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多