2012-07-11 57 views
0

我繼承了一個運行Coldfusion8和MySQL 5.0.88的站點。如何在MySQL中增加我的左連接查詢性能?

我有兩個表 - 第(一),其中包含產品信息和價格表(P),其中包括銷售價格表。

產品在產品表中是唯一的,但在價格表中可能包含多個條目(取決於價格表的數量)。

在我的產品搜索,我需要從一個產品信息,如果用戶是由賣方指定的價目表,我還需要抓住從各自的價目表價格在P

我預編譯所有sellerIDs和價目表的名字做我的實際產品的查詢,看起來像在此之前:

SELECT count(A.id) AS total 
    FROM arts A 

    <cfif variables.use_pricelists neq ""> 
    LEFT JOIN preislisten p ON 
      A.ean = P.ean 
     AND A.sellerID = p.sellerID 
     AND (
      // precompiled list - hardcoded loop 
      (P.list_name = "-Standard-" AND P.sellerID = "2222222222222") 
      OR 
      (P.list_name = "I" AND P.sellerID = "3333333333333") 
      ) 
    </cfif> 
    WHERE 
    ... 

雖然這個作品......它永遠。如果不檢查價格表,我可以在不到1秒的時間內運行我的搜索。如果價格表需要檢查,則需要7-10秒。

問題
這可以用不同類型的語法更快地完成嗎?

感謝您的幫助!

回答

2

你爲什麼不索引你的專欄,獲得更好的性能 CREATE INDEX語法:

創建preislisten(EAN)指數idx_ean

+0

我仍然在我的第一個月使用MySQL。索引編制有一個好的起點嗎? – frequent 2012-07-11 08:58:26

+0

請在您考慮進行連接的列上創建索引,創建語法語法如上所示。 – 2012-07-11 09:04:44

+0

好的。謝謝。快速提問:索引字段是否必須是唯一的? ean在A中是唯一的,但可以在P中有多個條目 – frequent 2012-07-11 09:08:16