2012-04-13 42 views
0

你是什麼意思?我可以使這個查詢更容易,並使性能更好?我可以使這個查詢更容易嗎?

非常感謝你對你的意見

+0

嘗試和避免'喜歡' – Virus 2012-04-13 10:42:37

+0

而不是? '='? – Baper 2012-04-13 10:47:05

+1

這是一個基本的選擇與一些香草連接和一些條件,你真的不能簡化它,如果這是你需要使用的數據和條件。它的性能將受到您在聯合和(非通配)搜索列上創建索引的影響; http://office.microsoft.com/en-us/access-help/create-and-use-an-index-to-improve-performance-HA010210347.aspx – 2012-04-13 10:48:04

回答

1

重新格式化,並刪除所有不必要的括號,它實際上是很容易讀取(請注意,當我寫了這個答案,問題的查詢是格式化文本!)

SELECT DISTINCT 
    tb_Bauteile.ID, tb_Bauteile.Name, tb_Bauteile.Blatt_nr, 
    FehlerCodes_akt_Liste.Fehlerpfad, FehlerCodes_akt_Liste.Pfad_Bezeichnung, 
    FehlerCodes_akt_Liste.Steuergerät, FehlerCodes_akt_Liste.Kommentar 
FROM 
     tb_Pinnummern INNER JOIN 
     tb_Bauteile 
     ON tb_Pinnummern.Bauteil = tb_Bauteile.ID INNER JOIN 
      tb_Fahrzeug 
      ON tb_Pinnummern.SG = tb_Fahrzeug.Motor_SG INNER JOIN 
       FehlerCodes_akt_Liste 
       ON tb_Bauteile.CDT = FehlerCodes_akt_Liste.CDT 
WHERE tb_Bauteile.Blatt_nr Like "5*" 
AND tb_Fahrzeug.ID = [forms]![frm_fahrzeug]![id] 
ORDER BY FehlerCodes_akt_Liste.Fehlerpfad; 

您還可以別名您的表名稱,使這些更簡單,例如在您的加入和WHERE子句中一般會提高性能,使用的字段

SELECT DISTINCT b.ID, b.Name 
FROM tb_Bauteile AS b 
WHERE b.Blatt_nr LIKE "5*" 

添加索引。請注意,tb_Bauteile.Blatt_nr上的索引可以提高性能,因爲您的LIKE子句只有尾隨通配符。但是,如果您的LIKE子句是LIKE '*5',那麼性能不會提高。