在 Access DB 中查询比使用 Excel(电源查询编辑器)的外部查询更快?

Posted

技术标签:

【中文标题】在 Access DB 中查询比使用 Excel(电源查询编辑器)的外部查询更快?【英文标题】:Query inside Access DB faster than external query with Excel (power query editor)? 【发布时间】:2019-05-09 11:48:20 【问题描述】:

我应该优化我公司的旧 Access DB 的性能。它包含几个大约 20 列和 50000 行的表。速度很慢,因为人家整张桌子,事后设置过滤器。

现在我想在传输完整行之前编写一个查询以减少Excel中的数据量,但是速度仍然很慢。

首先我尝试了 Excel 中的新电源查询编辑器。我首先通过仅选择最后几行(按日期)来减少行数。然后我与第二个表进行了内部连接。

最后,我返回的行数不到 20 行,我认为我很好。 但是当我启动 Excel 执行查询时,读取数据需要 10 - 20 秒。我可以看到,Excel 在设置过滤器之前会加载完整的表格。

我的下一个尝试是直接在 Access DB 中创建相同的查询,相同的设置。然后我在 Excel 中打开了这个查询,加载行的时间几乎为零。您选择“刷新”,结果立即显示。

我的问题是:有什么方法可以只在 Excel 中执行查询(无需接触 Access 文件),几乎与 Access 本身中的查询一样快?

最好的问候, 斯蒂芬

【问题讨论】:

【参考方案1】:

当然。

只需在 Excel 中从 MS Query 运行 SQL 查询。您可以在 Access 中创建查询,并在 MS Query 中复制粘贴 SQL。它们由相同的数据库引擎执行,并且应该以完全相同的速度运行。

请参阅this support page,了解如何在 Excel 中使用 MS Query 运行查询。

可以使用使用 VBA 的更复杂的解决方案,但应该不需要。

【讨论】:

它有效。谢谢你。但我想知道:MS Query 看起来非常老旧,就像 Access 97 一样。电源编辑器的编程是否如此糟糕,以至于我需要使用老式工具?而且“在 Access 中编写查询以将其复制粘贴到编辑器”的解决方法似乎很奇怪。 @StefanL。 PowerQuery 适用于所有系统并拥有自己的处理语言。它针对某些数据库(例如 SQL 服务器)进行了更多优化,而针对其他数据库的优化较少。因为它有自己的语言,如果一条语句没有优化,它需要拉入所有数据并在本地处理它,而不是让数据库执行它。 MS Query 确实很旧,但它只是将您提供的查询发送到数据库,使其简单可靠。我倾向于在 Access 中开发查询,因为它是一个熟悉的环境,但这并不重要,MS Query 也应该可以工作。

以上是关于在 Access DB 中查询比使用 Excel(电源查询编辑器)的外部查询更快?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建连接到仅下载查询数据的 Access DB 的 Excel Pivot?

Access DB查询结果提取

使用Excel VBA向Access DB添加附件

WHERE IN 在 Access VBA 中使用两个记录集进行查询

如何在 Excel 中使用带查询的 Access 数据库作为数据透视表

Excel 作为 Access 的前端 - 运行查询的最佳方式