我有一个从其他查询中提取数据和连接的查询。最终查询大约需要8分钟才能运行。是否有更有效的方法来查询基于查询构建的查询中的信息(例如创建包含第一个查询结果的表或构建索引 - 或者??)。
我的最终查询很简单:
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个查询构建的)。我正在寻找性能改进。
答案 0 :(得分:0)
通过在开头添加通配符
Like "*MISC*"
,
您正在使用子查询上的任何索引停止Access。
这会在较大的数据集上显着减慢速度。
您可以在查询链中移动前面的过滤,还是删除然后启动通配符?或者在没有Not Clause的情况下构建一个In子句?
答案 1 :(得分:0)
子查询(在IN关键字之后的查询)是不是冗余并始终返回相同的结果? - Peeyush 15小时前
@peeyush你是对的 - 这就是答案。我删除了select子查询,只保留了NOT LIKE“misc”部分,并在8秒内运行。谢谢!!! - Analyst123456789 11秒前编辑