繁体   English   中英

MS-Access SQL查询性能-慢

[英]MS-Access SQL Query Performance - Slow

我有一个查询,从其他查询中提取数据并加入。 最终查询大约需要8分钟才能运行。 有没有更有效的方法来从基于查询的查询中查询信息(例如使用第一个查询的结果创建表或构建索引-OR ??)。

我的最终查询很简单:

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*"的开头添加通配符,可以在子查询上使用任何索引来停止Access。

对于较大的数据集,这将大大降低其速度。

您可以在查询链中的较早位置移动筛选,还是先删除通配符再删除? 还是构建没有Not子句的In子句?

子查询(IN关键字后的查询)不是多余的并且总是返回相同的结果吗? – Peeyush 15小时前

@peeyush你是正确的-答案是正确的。 我删除了select子查询,并仅保留了NOT LIKE“ misc”部分,此部分在8秒钟内运行。 谢谢!!! – Analyst123456789 11秒前编辑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM