我正在尝试通过使用 ODBC 连接从远程 PostgreSQL 数据库中提取数据来更新本地 Access 2010 表。当我在 Access 更新查询中手动指定WHERE
条件时,我可以在数据库服务器上看到有限数量的行正在传递给 Access。但是,当我WHERE
根据本地 Access 表中的最后一行使条件动态化时,整个表似乎被拉入 Access 并且条件应用到内存中(我假设,因为它永远不会完成)。
例如,此查询仅从远程数据库中获取 2012 行,我可以WHERE
在删除服务器上看到该子句:
INSERT INTO local (dt, latitude, longitude)
SELECT dt, latitude, longitude
FROM remote_odbc
WHERE remote_odbc.dt > #2011-12-31 23:59:59#;
但我真正想要的是查看dt
本地表中的最后一个日期时间(),并且只从远程数据库中检索这些行。
这是我尝试过的:
INSERT INTO local (dt, latitude, longitude)
SELECT dt, latitude, longitude
FROM remote_odbc, (SELECT max(dt) AS max_dt FROM local) AS sub
WHERE remote_odbc.dt > max_dt;
当我这样做时,在服务器上运行的查询根本没有WHERE
子句,这让我认为 Access 正在检索整个远程表,然后在WHERE
本地应用该子句。表太大,互联网太慢,不实用。
如何重写我的更新查询,以便它只通过 ODBC 链接检索我想要的行?