【问题标题】:Insert into local table from Linked Table query is slow从链接表查询插入本地表很慢
【发布时间】:2018-06-11 18:46:31
【问题描述】:

我正在想办法在 Access Db 中固定插入查询。

我在 Access db 中有一个名为 QUADReportSource 的链接表,它连接到我的 C 驱动器中名为 QUAD_report 的电子表格。我正在尝试从 QUADReportSource 复制名为 Outlet 和 Agent Type 的 2 列并插入名为 TblTempQuad 的本地表中。

QUADReportSource 有重复的记录(相同的出口编号和不同的代理类型),所以在插入时,我通过制作 TblTempQuad 主键的 Outlet 和 Agent Type 列来确保只有 [Outlet, Agent Type] 的唯一组合插入到本地表中。

QUADReportSource 有 332024 条记录。插入所有 332024 需要 3 分钟,我希望将唯一记录插入 TblTempQuad 应该花费更少,但需要 5-6 分钟。当我在选择查询中使用 distinct 关键字而不是主键时,结果相同。

这里是查询:

db.Execute "insert into TblTempQuad([Outlet],[Agent Type]) select [Outlet],[Agent Type] from QUADReportSource"

【问题讨论】:

  • Access、SQL Server 和 MySQL 都是不同的 RDBMS。请尽量不要标记与您的问题无关的内容。
  • 我一点也不觉得这么慢。 SELECT DISTINCT 通常需要更多时间,因为过滤也需要时间。
  • @ErikvonAsmuth,听到这个消息真令人欣慰。我以为我做错了什么。我确实需要你对其他事情的意见。我在 Access 上有一个表单,它从本地表 TblTempQUAD 中获取 Outlet 和 Agent 类型字段。有没有办法在用户打开表单之前将这种插入到本地表中?目前,一旦用户登录就会发生这种情况,这意味着用户必须等待 5 分钟才能使用表单。
  • 嗯...这是一个单独的问题,Access 无法预测用户是否要打开表单。您可以异步运行查询(可能在打开数据库后立即运行),但是您需要检查查询是否已完成。
  • @ErikvonAsmuth,是的,目前我正在点击表单时调用此代码。感谢您的输入

标签: sql-server ms-access vba


【解决方案1】:

我认为 SQL 应该很快,而且肯定比使用 VBA 循环记录要快,但是 acc.DoCmd.TransferSpreadsheet 呢?这是一个例子。

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "importTable", "C:\test\test.xlsx", ", True

我不知道这与 SQL Server 有什么关系。

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2014-04-30
    相关资源
    最近更新 更多