我寫了一個查詢,並在本地工作正常。當它是生活我得到這個錯誤:如何讓我的MySQL查詢與許多左連接執行得更快?
ERROR 1104: The SELECT would examine too many records and probably take a very long time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the SELECT is ok
我已經加入SET SQL_BIG_SELECTS=1;
。它現在正在工作,但運行速度非常緩慢。任何一個可以整理我的查詢,ege而不是LEFT JOIN使用另一種方法。 這是我的查詢:
SELECT sh.*,
ps.provider_name,
ps.photo_path AS photo
FROM scholarship sh
left join cat_category_sch ccs
ON ccs.scholar_id = sh.id
left join elg_countries_sch elg
ON elg.scholar_id = sh.id
left join study_level_sch sls
ON sls.scholar_id = sh.id
left join taken_country_sch tcs
ON tcs.scholar_id = sh.id
left join providers ps
ON ps.id = sh.provider
left join countires c1
ON c1.id = elg.county_id
left join countires c2
ON c1.id = tcs.county_id
left join study_level sl
ON sl.id = sls.study_level_id
WHERE sh.status = 1
AND sh.ain_status = 1
AND sh.deadline >= Date_sub(Now(), interval 1 year)
GROUP BY sh.id
ORDER BY sh.id DESC
在此先感謝
對於初學者...最後三個左連接似乎沒有用,你沒有使用這些數據,所以你不需要使用它們。這可以改善查詢的運行時間。 – 2015-03-02 12:45:39
向我們展示表結構(使用任何索引)並針對查詢運行EXPLAIN以顯示MySQL如何執行它 – 2015-03-02 12:45:55
最後3個連接也是必需的,因爲在某些情況下,我已經使用了條件基於這些表的位置,所以我把它放在上面的查詢我刪除了一些條件。在每個表中,我維護索引(自動增量),如ID – 2015-03-02 12:55:59