[英]optimizing query (LEFT JOIN)
我的目標是同時顯示公司的搜索結果:帶類別和不帶類別(尚未添加)。 我的公司表具有大約12000條記錄。 具有類別的公司大約只有200個。
有兩個搜索輸入:$ name->公司或類別的名稱。 $ id_country->國家的ID
我要顯示:1)所有數據庫中有多少個結果。 (這就是為什么我使用:SQL_CALC_FOUND_ROWS)2)我使用LIMIT來顯示每頁10個結果(帶有分頁)。
我的查詢:
SELECT SQL_CALC_FOUND_ROWS
c.*,
lc.name as langName,
lc.shortDesc,
lc.longDesc
FROM companies c
JOIN lang_companies lc USING(id_company)
LEFT JOIN categories_companies cc USING(id_company)
LEFT JOIN lang_categories lang_cat USING (id_category)
WHERE
lc.id_lang = '2' AND c.status = 1 AND c.active = 1 AND c.id_country = ".$id_country." AND
(lc.name = LCASE('".$name."') OR (lang_cat.name = LCASE('".$name."') AND lang_cat.id_lang = '2')
OR c.city = '".$name."')
GROUP BY c.id_company
ORDER BY c.id_hierarchi asc
LIMIT 0, 10
該查詢執行大約6秒鍾,我想對其進行優化。 你可以幫幫我嗎? 如有任何建議,我將不勝感激。
在查詢的FROM部分之外,您似乎並沒有實際使用通過這兩行連接的表:
LEFT JOIN categories_companies cc USING(id_company)
LEFT JOIN categories cat USING (id_category)
我猜想,如果它們通過諸如聯接抑制行之類的更巧妙的方法不相關,則可以將它們從查詢中排除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.