MS-Access SQL 查询性能 - 慢
MS-Access SQL Query Performance - Slow
我有一个从其他查询中提取数据和连接的查询。最终查询大约需要 8 分钟才能到达 运行。是否有更有效的方法来查询基于查询构建的查询中的信息(例如使用第一个查询的结果创建 table 或构建索引 - 或 ??)。
我的最终查询很简单:
SELECT Filtered_ZFEWN.[Base 8], Filtered_ZFEWN.Notification, Filtered_ZFEWN.
[Service Product], Filtered_ZFEWN.[Product Hierarchy]
FROM Filtered_ZFEWN RIGHT JOIN
Notifications_by_Base_8 ON Filtered_ZFEWN.[Base 8] =
Notifications_by_Base_8.[ZFEWN Base 8]
WHERE Notifications_by_Base_8.[Product Hierarchy] IN
(SELECT Notifications_by_Base_8.[Product Hierarchy]
FROM Notifications_by_Base_8
WHERE Notifications_by_Base_8.[Product Hierarchy] NOT LIKE "*MISC*");
此查询正在从其他 6 个查询中提取数据(您可以看到它明确地从两个查询中提取数据,但其他查询也是基于 4 个查询构建的)。我正在寻找性能改进。
通过在开头添加通配符
Like "*MISC*"
,
您正在使用子查询上的任何索引停止访问。
这会在更大的数据集上显着降低速度。
您能否在查询链中将过滤移动到更早的位置,或者删除然后开始的通配符?或者构建一个没有 Not 子句的 In 子句?
子查询(IN关键字后的查询)不是多余的,总是returns相同的结果吗? – Peeyush 15 小时前
@peeyush 你是对的——这就是答案。我在 8 秒内删除了 select 子查询并仅保留 NOT LIKE "misc" 部分和这个 运行 。谢谢!!! – Analyst123456789 11 秒前编辑
我有一个从其他查询中提取数据和连接的查询。最终查询大约需要 8 分钟才能到达 运行。是否有更有效的方法来查询基于查询构建的查询中的信息(例如使用第一个查询的结果创建 table 或构建索引 - 或 ??)。
我的最终查询很简单:
SELECT Filtered_ZFEWN.[Base 8], Filtered_ZFEWN.Notification, Filtered_ZFEWN.
[Service Product], Filtered_ZFEWN.[Product Hierarchy]
FROM Filtered_ZFEWN RIGHT JOIN
Notifications_by_Base_8 ON Filtered_ZFEWN.[Base 8] =
Notifications_by_Base_8.[ZFEWN Base 8]
WHERE Notifications_by_Base_8.[Product Hierarchy] IN
(SELECT Notifications_by_Base_8.[Product Hierarchy]
FROM Notifications_by_Base_8
WHERE Notifications_by_Base_8.[Product Hierarchy] NOT LIKE "*MISC*");
此查询正在从其他 6 个查询中提取数据(您可以看到它明确地从两个查询中提取数据,但其他查询也是基于 4 个查询构建的)。我正在寻找性能改进。
通过在开头添加通配符
Like "*MISC*"
,
您正在使用子查询上的任何索引停止访问。
这会在更大的数据集上显着降低速度。
您能否在查询链中将过滤移动到更早的位置,或者删除然后开始的通配符?或者构建一个没有 Not 子句的 In 子句?
子查询(IN关键字后的查询)不是多余的,总是returns相同的结果吗? – Peeyush 15 小时前
@peeyush 你是对的——这就是答案。我在 8 秒内删除了 select 子查询并仅保留 NOT LIKE "misc" 部分和这个 运行 。谢谢!!! – Analyst123456789 11 秒前编辑