【发布时间】: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