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

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

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

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

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

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

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

最好的问候, 斯蒂芬

【问题讨论】:

    标签: excel ms-access excel-2016 ms-access-2016


    【解决方案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 也应该可以工作。
    猜你喜欢
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多