我正在使用Microsoft Access 2003.我的项目中的一个表单需要很长时间才能显示给用户。
这是适用的查询:
SELECT DISTINCT tb_KonzeptDaten.DFCC
,tb_KonzeptDaten.OBD_Code AS Konzept_Obd
,tb_bauteile.*
,FehlerCodes_akt_Liste.VAG_Code
,FehlerCodes_akt_Liste.OBD_Code
,FehlerCodes_akt_Liste.F_Klasse_EU
,FehlerCodes_akt_Liste.F_Klasse_US
,FehlerCodes_akt_Liste.CDT AS CdtNr
,FehlerCodes_akt_Liste.Pfad_Bezeichnung
,FehlerCodes_akt_Liste.Fehlerpfad AS PfadName
,FehlerCodes_akt_Liste.Fehlerunterpfad
,tb_bauteile_Tools.Tool AS Tool_
FROM (
(
tb_bauteile LEFT JOIN FehlerCodes_akt_Liste ON tb_bauteile.OBD2_Plaus = FehlerCodes_akt_Liste.ID
) LEFT JOIN tb_bauteile_Tools ON tb_bauteile.Tool = tb_bauteile_Tools.ID
)
LEFT JOIN tb_KonzeptDaten ON FehlerCodes_akt_Liste.Fehlerpfad = tb_KonzeptDaten.DFC;
如果我删除 DISTINCT 然后运行查询,性能将得到改善 (从9秒到2秒)。另外,我也在必要的字段上放了一个索引。
如何更改查询(可能没有DISTINCT)以提高性能?
答案 0 :(得分:1)
我建议获取不同的ID,然后在列查询中获取所需的列。
类似这样的事情
Select (select Fehlerpfad from FehlerCodes_akt_Liste where id=A.id ) as col1, ...
from
(
Select distinct ids from table
.........
) A
答案 1 :(得分:0)
使用distinct基本上是在执行group by
,因此您只能获得“唯一”记录。如果您没有任何重复记录,则不需要这样做。
我会将注意力集中在您的联接上,而不是distinct
子句。