我有一個查詢需要很長時間(超過兩秒只是這個簡單的查詢)的問題。MySQL:分組/有序/左連接查詢非常慢
首先看起來它似乎是一個索引問題,所有連接的字段都被索引,但我找不到我可能需要索引的東西來加速它。只要我將查詢所需的字段添加,它就會變得更慢。
SELECT `jobs`.`job_id` AS `job_id` FROM tabledef_Jobs AS jobs
LEFT JOIN tabledef_JobCatLink AS jobcats ON jobs.job_id = jobcats.job_id
LEFT JOIN tabledef_Applications AS apps ON jobs.job_id = apps.job_id
LEFT JOIN tabledef_Companies AS company ON jobs.company_id = company.company_id
GROUP BY `jobs`.`job_id`
ORDER BY `jobs`.`date_posted` ASC
LIMIT 0 , 50
錶行數(〜):tabledef_Jobs(108K),tabledef_JobCatLink(109K),tabledef_Companies(100),tabledef_Applications(50K)
在這裏你可以看到的描述。 '使用臨時' 似乎是什麼拖慢查詢:
表索引截圖:
任何幫助,將不勝感激使用答案
編輯
最終提高了查詢與感謝@Steve(標記爲答案)。最終,最終的查詢從〜22s減少到〜0.3s:
SELECT `jobs`.`job_id` AS `job_id` FROM
(
SELECT * FROM tabledef_Jobs as jobs ORDER BY `jobs`.`date_posted` ASC LIMIT 0 , 50
) AS jobs
LEFT JOIN tabledef_JobCatLink AS jobcats ON jobs.job_id = jobcats.job_id
LEFT JOIN tabledef_Applications AS apps ON jobs.job_id = apps.job_id
LEFT JOIN tabledef_Companies AS company ON jobs.company_id = company.company_id
GROUP BY `jobs`.`job_id`
ORDER BY `jobs`.`date_posted` ASC
LIMIT 0 , 50
感謝固定圖像@XLAnt - 我沒有足夠的代表爲尚未:) – 2013-03-07 13:51:02
嘗試添加一個索引到'date_posted'並讓我知道如果它改善 – jcho360 2013-03-07 14:00:04
@ jcho360謝謝,但我以前曾嘗試在'date_posted'上添加索引,但不幸的是這沒有什麼區別。此外,我需要這個足夠靈活,以便可能接受'ORDER BY'子句中的不同字段。 – 2013-03-07 14:06:09