我有一個很慢的MYSQL查詢的問題。我正在用PHP構建一個AJAX菜單,並且性能確實是一個問題。查詢大約需要0.5秒才能完成,我不知道如何優化它。我的SQL查詢如何優化?
SQL查詢:
SELECT M.nom_mat, M.id_mat, M.rang, SC.nom_sous_cat, SC.id_sous_cat, C.nom_cat,M.id_cat
FROM besson_mat M
LEFT OUTER JOIN besson_lien_mat LM ON M.id_mat = LM.id_mat
LEFT OUTER JOIN besson_sous_cat SC ON SC.id_sous_cat = LM.id_sous_cat
LEFT OUTER JOIN besson_cat C ON C.id_cat = SC.id_cat
WHERE M.en_ligne = '1'
AND M.lg = 'fr'
AND (
M.id_cat = '28'
OR M.id_cat = '29'
)
OR (
SC.id_sous_cat = '37'
OR SC.id_sous_cat = '42'
OR SC.id_sous_cat = '43'
OR SC.id_sous_cat = '44'
)
ORDER BY C.id_cat ASC , SC.id_sous_cat ASC , M.rang ASC
感謝您的幫助,如果你需要更多的細節我會更新我的問題。
最後編輯
WHERE子句中的額外的括號是問題的原因。現在我的查詢需要大約0.0718秒才能完成,非常感謝。
而且,看來你可能有一個語法問題。你確定你不想在where子句的最後兩個部分附加一組括號嗎? – 2010-09-10 15:28:36
謝謝,額外的括號是我的問題的原因。現在我的查詢很快。 – rcampistron 2010-09-11 16:32:23