0

你的问题访问大师在那里:

我有一个 Oracle 直通查询,它在 Access 程序中大约2 秒内返回一个结果集。但是,当我尝试在生成表查询中使用该传递查询时,它拖了大约 7 分钟。(该文件当前位于我的桌面上,所有表都是本地的(未链接))。

为了提高性能,我创建了删除/追加查询并使用 VBA 运行它。然后我尝试使用显式字符串 SQL 查询的 DAO db.Execute,引用传递查询 (INSERT/SELECT)。所有方法都非常慢!我希望它接近传递的实际运行时间(再次,2 秒)。

有什么见解吗?

4

2 回答 2

2

很可能,生成表和传递查询之间没有实际的、大的性能差异。该查询实际上需要几分钟才能运行,而您可以在几秒钟内查看一些结果。向下滚动查询窗口可能会显示查询仍在呈现。

因为直通查询与 ODBC 驱动程序/OLEDB 提供程序接口以通过网络解析客户端(即 MS Access)和数据库(即 Oracle)之间的 SQL 语句,因此可能有多种环境或软件原因。

  1. 客户端计算机和服务器之间的网络流量。避免使用 WAN 进行硬连线 LAN连接。切勿在闪存驱动器或磁盘空间有限的驱动器上使用 Internet 文件夹或运行 Access。
  2. 可能已过时的 ODBC 驱动程序/OLEDB 提供程序。尝试查找与您的 Oracle 版本和 MS Office 版本兼容的最新版本。并尝试在 64 位架构上运行。
  3. 无法映射到 JET/ACE 数据类型的复杂或大型 Oracle 数据类型,例如高精度数字类型或大型二进制对象类型。请参阅此Oracle 文档
  4. 应该压缩甚至反编译的臃肿访问应用程序。
  5. 没有拆分架构的数据库,其中应用程序对象(查询、表单、报表、宏、模块)与表分离。
于 2020-01-07T22:18:20.637 回答
0

make 表是访问本地的吗?我的意思是一条狗和一辆公共汽车在这里是两个非常不同的东西。

那是使表成为oracle的本地表,还是您正在考虑将PT查询用作Access中LOCAL表的生成表?因此,您的比较是珠穆朗玛峰的不同之处。

我怀疑如果目标表是“本地”,则与 Oracle 的平面简链接表与 PT 查询的表可能会执行相同的操作。那是因为您将整个表从网络管道拉到本地表。

如果 PT 查询是一个使表 100% 到 Oracle 服务器上的另一个表?然后,PT 查询的执行速度应该与您在 Oracle 控制台中键入该命令一样快——应该没有区别。

你没有提到行数(编辑 - 我看到你只注意到 16,000 行 - 这是相当小的)。所以问题是网络连接。这是一个 LAN(局域网),还是你使用的是 VPN 和互联网,它会慢 100 倍。我的意思是,比典型 LAN 慢 100 倍的连接将慢 100 倍——这并不奇怪。

因此,有关正在使用的连接类型和行数的详细信息将在这里提供重要信息。但是,如果此处涉及 VPN 和 Internet 连接,则此类连接的速度比您的超级廉价办公室局域网慢约 50 倍。您可以阅读我的这篇文章来解释这个速度问题: http ://www.kallal.ca//Wan/Wans.html

我不明白为什么 16,000 行需要这么长时间——在最便宜的办公网络上,这将花费不到一秒钟的时间。使用任何其他客户端来提取该数据不应该比 PT 查询运行或工作得更快。我的意思是,ado.net、ODBC 或 oleDB 不会导致服务器说“嗯,哎呀”——让我们更慢地发送数据。所有这些客户端都应该以相同的速率提取数据。

于 2020-01-08T00:58:38.970 回答