【发布时间】:2012-08-08 06:55:22
【问题描述】:
我使用的是 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)以提高性能?
【问题讨论】:
-
请尝试 group by 并告诉我结果
-
重复记录从何而来?它们是存在于主表 (tb_KonzeptDaten) 中还是由于连接?
-
@Remou 我不确定你的问题是否正确,但如果我删除 Distinct 两列(DFCC,Konzept_obd)的值重复,结果它们来自 tb_KonzeptDaten 表,带有 DISTINCT 我在这两列中看不到任何值
-
在没有查询的情况下查看表时,是否存在重复项?哪张桌子最大?
-
好的,从那里开始。创建查询
SELECT DISTINCT DFCC, OBD_Code AS Konzept_Obd FROM tb_KonzeptDaten,保存查询并在此查询中使用该查询而不是 tb_KonzeptDaten。如果它运行得更快,您可以用派生表代替查询。另外,你确定你有合适的索引吗?
标签: sql sql-server ms-access