MySQL - Optimize subquery in Select, where and order by
Turn it around so that you start with the grouping:

SELECT  c.id, c.`job-cat`, x.jobCount
    FROM  
    (
        SELECT  mul_category, COUNT(*) AS jobCount
            FROM  jobs
            WHERE  ending &gt;= CURDATE()
            GROUP BY  mul_category 
    ) AS x
    JOIN  jobscat AS c  ON c.id = x.mul_category


Indexes:

jobs:  (mul_category, ending)
jobscat:  (id, `job-cat`)