>给你的问题 访问大师在那里:
我有一个 Oracle 直通查询,它在 Access 程序中大约2 秒内返回一个结果集。 但是,当我尝试在生成表查询中使用该传递查询时,它会拖动大约 7 分钟。 (该文件当前驻留在我的桌面上,所有表都是本地的(未链接((。
为了提高性能,我创建了删除/追加查询并使用 VBA 运行它。 然后我尝试了DAO db。使用显式字符串 SQL 查询执行,引用传递查询(插入/选择(。 所有方法都非常慢! 我很想让它接近直通的实际运行时间(再次,2 秒(。
有什么见解吗?
很可能,make-table 和传递查询之间没有实际的、很大的性能差异。查询实际上需要几分钟才能运行,而您可以在几秒钟内查看一些结果。向下滚动查询窗口可能会显示查询仍在呈现。
由于传递查询与 ODBC 驱动程序/OLEDB 提供程序交互,以跨网络分析客户端(即 MS Access(和数据库(即 Oracle(之间的 SQL 语句,因此多个环境或软件原因可能是因素。
- 客户端计算机和服务器之间的网络流量。对于硬连线 LAN 连接,避免使用 WAN。切勿使用互联网文件夹或在闪存驱动器或磁盘空间有限的驱动器上运行 Access。
- 可能已过时的 ODBC 驱动程序/OLEDB 提供程序。尝试查找与您的 Oracle 版本和 MS Office 版本兼容的最新版本。并尝试在 64 位架构上运行。
- 无法映射到 JET/ACE 数据类型(如高精度数字类型或大型二进制对象类型(的复杂或大型 Oracle 数据类型。请参阅此甲骨文文档。
- 应该压缩甚至反编译的臃肿访问应用程序。
- 没有拆分体系结构的数据库,其中应用程序对象(查询、窗体、报表、宏、模块(与表分离。
make 表是否要访问本地? 我的意思是狗和说公共汽车在这里是两个非常不同的东西。
该表是 oracle 本地的,还是您将 PT 查询用作 Access 中 LOCAL 表的生成表?因此,您的比较是这里的珠穆朗玛峰差异。
我怀疑如果目标表是"本地"的,则与 Oracle 的平面简链接表与 PT 查询的平面链接表可能会执行相同的操作。这是因为您将整个表从网络管道拉到本地表。
如果 PT 查询是将表 100% 生成到 Oracle 服务器上的另一个表?然后,PT 查询的执行速度应该与您在 Oracle 控制台中键入该命令的速度一样快 - 应该没有区别。
您没有提及行数 (编辑 - 我看到你只注意到 16,000 行 - 这是相当小的(。 所以问题是网络连接。这是局域网(局域网(,还是您使用的是VPN和互联网,速度会慢100倍左右。我的意思是,比典型 LAN 慢 100 倍的连接将慢 100 倍 - 这并不奇怪。
因此,有关正在使用的连接类型和行计数的详细信息将在此处提供重要信息。但是,如果这里涉及VPN和互联网上的连接,那么这种连接比您的超级便宜的办公室局域网慢约50倍。 你可以阅读我的这篇文章,它解释了这个速度问题: http://www.kallal.ca//Wan/Wans.html
我不明白为什么 16,000 行需要这么长时间 - 在最便宜的办公网络上,这将花费不到一秒钟的时间。使用任何其他客户端拉取该数据不应比 PT 查询更快地运行或工作。我的意思是,ado.net,ODBC或oleDB不会导致服务器说,哼,哎呀 - 让我们发送数据的速度慢一点。所有这些客户端都应以相同的速率拉取数据。