Sql 查询优化
我在Microsoft Access中有一个查询,需要c.a.6秒才能返回1000条记录Sql 查询优化,sql,ms-access,sql-optimization,Sql,Ms Access,Sql Optimization,我在Microsoft Access中有一个查询,需要c.a.6秒才能返回1000条记录 SELECT DISTINCTROW tb_bauteile.* FROM tb_bauteile LEFT JOIN FehlerCodes_akt_Liste ON tb_bauteile.CDT = FehlerCodes_akt_Liste.CDT WHERE (( ( FehlerCodes_akt_Liste.Steuergerät ) = 'MEDC17'
SELECT DISTINCTROW tb_bauteile.*
FROM tb_bauteile
LEFT JOIN FehlerCodes_akt_Liste
ON tb_bauteile.CDT = FehlerCodes_akt_Liste.CDT
WHERE (( ( FehlerCodes_akt_Liste.Steuergerät ) = 'MEDC17' ))
ORDER BY FehlerCodes_akt_Liste.Fehlerpfad;
我把索引放在必要的字段上。
tb_bauteile拥有约3000条记录,而少数akt_Liste代码拥有约20000条记录。如果我删除Where和order子句,查询将非常快地返回记录。
如何优化我的查询?您已经
tb_bauteile LEFT JOIN FehlerCodes_akt_Liste
但是这个WHERE
子句
FehlerCodes_akt_Liste.Steuergerät = 'MEDC17'
该约束使左连接无效。。。您的结果集将只包括在tb_bauteile.CDT
和FehlerCodes\u akt_Liste.CDT
之间有匹配项的行。您还可以切换到内部联接
,这应该更快
这里还有一些其他问题需要研究
DISTINCTROW
,您是否注意到任何性能影响CDT
、Steuergerät
和Fehlerpfad
上都有索引。您是否也执行了压缩操作(更新统计数据)tb_bauteile LEFT JOIN FehlerCodes_akt_Liste
但是这个WHERE
子句
FehlerCodes_akt_Liste.Steuergerät = 'MEDC17'
该约束使左连接无效。。。您的结果集将只包括在tb_bauteile.CDT
和FehlerCodes\u akt_Liste.CDT
之间有匹配项的行。您还可以切换到内部联接
,这应该更快
这里还有一些其他问题需要研究
DISTINCTROW
,您是否注意到任何性能影响CDT
、Steuergerät
和Fehlerpfad
上都有索引。您是否也执行了压缩操作(更新统计数据)尝试在列FehlerCodes_akt_Liste上添加索引。FehlerpfadI在FehlerpfadI上有索引记录来自何处?本地访问后端?网络上的访问后端?在别处哪一个是较小的表?记录来自后端,但nicht local和我使用LANCan在本地计算机上使用副本进行测试?我强烈怀疑这是网络问题。请尝试在列FehlerCodes_akt_Liste上添加索引。FehlerpfadI在FehlerpfadI上有索引记录来自何处?本地访问后端?网络上的访问后端?在别处哪一个是较小的表?记录来自后端,但nicht local和我使用LANCan在本地计算机上使用副本进行测试?我强烈怀疑这是一个网络问题。谢谢你的回答。请你详细解释一下第2点。阅读“定期压缩你的Microsoft Jet数据库”标题下的部分在本页:谢谢Hansup的回答。请您详细解释第2点。请阅读本页“定期压缩Microsoft Jet数据库”标题下的部分: