クエリに時間がかかりすぎるという問題があります(この単純なクエリの場合は2秒以上かかります)。
一見すると、インデックス作成の問題のように見えます。結合されたすべてのフィールドにインデックスが付けられますが、これを高速化するためにインデックスを作成する必要がある他のフィールドが見つかりません。必要なフィールドをクエリに追加するとすぐに、さらに遅くなります。
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(マークされた回答)のおかげで最終的に改善されたクエリ。最終的に、最終的なクエリは約22秒から約0.3秒に短縮されました。
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