我是一個MySQL數據庫優化的新手。SELECT COUNT指數
我有以下慢速查詢:
SELECT COUNT(DISTINCT p.product_id) AS total
FROM shs_product p
LEFT JOIN shs_product_description pd
ON (p.product_id = pd.product_id)
LEFT JOIN shs_product_to_store p2s
ON (p.product_id = p2s.product_id)
LEFT JOIN shs_product_to_category p2c
ON (p.product_id = p2c.product_id)
WHERE pd.language_id = '1'
AND p.status = '1'
AND p.date_available <= NOW()
AND p2s.store_id = '$
誰能行動提供建議創建索引,以加快此查詢? 您推薦哪張桌子和哪一列?
任何幫助將不勝感激......
我想補充:這和其他查詢造成CPU佔用率過高/負載。我也在努力工作my.cnf文件,但我失敗了。如果有人能提出建議,我將非常感激。 – Derek 2014-09-25 23:30:35
您的查詢不是在做你認爲正在做的事。你的左連接實際上是INNER連接。將表連接上的條件移動到所述JOIN的ON子句中。 – Sebas 2014-09-25 23:53:56
不知道這是否會提高速度..但你正在減少你的左連接到內部連接的方式,你有這個查詢措辭......左連接產生空值,當一個記錄沒有找到(內連接過濾出來)。其中p2s.store_ID ='$表示任何具有空值的記錄(包含的記錄是因爲您將要加入)最終會在此where子句(IE,該查詢也可能是所有內部聯接)上被過濾掉。不是真正的速度幫助,而只是想確保你意識到這一點。左連接到p2c似乎是無關緊要的。 – Twelfth 2014-09-25 23:56:16