0

Microsoft Access 2003 を使用しています。プロジェクトの 1 つのフォームがユーザーに表示されるまでに時間がかかります。

該当するクエリは次のとおりです。

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

個別の使用は基本的に実行しているgroup byため、「一意の」レコードのみが取得されます。重複するレコードがない場合、これは必要ありません。

distinct句ではなく、結合に焦点を当てます。

于 2012-08-08T06:58:34.750 に答える