我正在通过 ODBC 连接到 Jet 4 DB。Jet DB 使用对 Oracle DB 的传递查询。到目前为止,这有效(不能直接访问 pt 查询,但在查询上创建视图就可以了)。
我需要一些 p-ts 返回的数据子集。参数最好,但不支持。
两个问题:
1) Jet 似乎确实能够将一些 where 子句推送给 Oracle。例如,我有一个返回 100k 行的直通查询。带有单个过滤子句(例如“district = '1010'”)的 pt 视图非常快,因此处理似乎发生在 Oracle 上。添加更多子句会使查询减慢到爬行速度,在 CPU 使用率高的情况下循环数分钟。是否有关于在 Jet 侧传递的内容和完成的内容的任何文档?
2) 有很多关于如何使用 VBA/Access 创建动态直通查询的教程。是否可以使用通过 ODBC 访问的 Jet 来执行此操作(或任何类似的操作)?
谢谢马丁
编辑: 对不起,不清楚。
我有一个通过 ODBC 访问 Jet db 的报告工具。Jet db 包含一些数据和几个到 Oracle db 的直通查询。一个典型的用例是使用来自 Jet 和 Oracle 的数据为给定部门和给定日期生成报告。这在原则上非常有效。
问题是直通查询不能包含任何参数。直通查询就像一个视图,所以我可以简单地执行“select * from pt_query where dep = 'a' and date = somedate”。然而,Jet 从 pt 加载所有行并在客户端进行全面扫描。这对于 100k 行视图来说非常慢,我需要找到一种方法来避免这种情况。
对于一些简单的选择,Jet 似乎确实让 Oracle 完成了艰苦的工作并且不会加载所有行,因此我的问题 1。
如果这不起作用,我需要找到一种方法来强制 Jet 仅从 Oracle 加载我需要的给定请求的数据。
我知道我可以通过Access VBA修改pts,但我只能通过ODBC连接,所以我只能将SQL传递给Jet,不能调用vb api(除非可以在SQL语句中内联VB)。