Hi Guys!
I have the following MySQL query which loads painfully slow. It performs a search on a database of over 30,000 jobs. It shouldn’t be this slow (takes around 30 secs to load).
SELECT jobs.job_title, jobs.job_url, jobs.job_salary, jobs.job_ote, jobs.job_perks, jobs.job_description, jobs.date_posted, companies.company_name, companies.company_url, companies.logo_thumbnail, count( applications.id ) AS applications, count( featured_jobs.id ) AS featured, l.display_name, l.postcode, l.display_county
FROM jobs
INNER JOIN companies ON companies.id = jobs.company_id
INNER JOIN jobs_industries ON jobs_industries.job_id = jobs.id
INNER JOIN jobs_job_types ON jobs_job_types.job_id = jobs.id
INNER JOIN (
SELECT job_id, if( count( job_id ) >1, 'Locations throughout the UK', display_name ) AS display_name, postcode, display_county, location_id
FROM jobs_locations
GROUP BY job_id
) AS l ON l.job_id = jobs.id
LEFT OUTER JOIN applications ON applications.job_id = jobs.id
LEFT OUTER JOIN featured_jobs ON featured_jobs.job_id = jobs.id
WHERE jobs.status = 'on'
GROUP BY jobs.id
ORDER BY featured DESC , date_posted DESC
I did an explain on the query and it produced this:
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY applications system NULL NULL NULL NULL 0 const row not found
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 31405 Using temporary; Using filesort
1 PRIMARY jobs eq_ref PRIMARY,company_id PRIMARY 4 l.job_id 1 Using where
1 PRIMARY companies eq_ref PRIMARY PRIMARY 4 db_name.jobs.company_id 1 Using where
1 PRIMARY featured_jobs ALL NULL NULL NULL NULL 2
1 PRIMARY jobs_industries ref job_id job_id 4 db_name.jobs.id 12 Using where; Using index
1 PRIMARY jobs_job_types ref job_id job_id 4 db_name.jobs_industries.job_id 12 Using where; Using index
2 DERIVED jobs_locations ALL NULL NULL NULL NULL 31405 Using temporary; Using filesort
Any input is appreciated.