0

我正在使用 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)以提高性能?

4

2 回答 2

1

我会建议获取不同的 ID,然后在列查询中获取您想要的列。

像这样的东西

Select (select Fehlerpfad from FehlerCodes_akt_Liste where id=A.id ) as col1, ...
from
(
   Select distinct ids from table
   .........
) A
于 2012-08-08T07:32:06.060 回答
0

使用 distinct 本质上是在做一个group by,所以你只会得到“唯一”的记录。如果您没有任何重复记录,则不需要这样做。

我会将重点放在您的联接上,而不是distinct子句上。

于 2012-08-08T06:58:34.750 回答