サイトのストレステストとすべてが壊れていることは明らかです。
今日の問題:いくつかのページのWSOD。数時間後、1ページの問題をこのクエリに絞り込みました(願っています)。以前は1秒で実行されていました。今では>300かかります。
SELECT jobs.posting_date ,
jobs.id ,
jobs.title ,
addresses.street ,
cities.name ,
states.abbr ,
details.target_url ,
details.description_extracted AS extraction,
COUNT(jobs_skills.skill_id) AS skills ,
users.first_name
FROM jobs
JOIN addresses
ON addresses.id = jobs.address_id
JOIN states
ON addresses.state_id = states.id
JOIN cities
ON addresses.city_id = cities.id
JOIN job_feed_details AS details
ON jobs.id = details.job_id
LEFT JOIN jobs_skills
ON jobs.id = jobs_skills.job_id
LEFT JOIN users
ON users.id = details.user_id
WHERE details.moderated = 0
AND expiration = 0
GROUP BY jobs.id
ORDER BY jobs.posting_date DESC
実行中EXPLAIN
私はこれを取得します:
id select_type table type possible keys key key_len ref rows extra
1 SIMPLE details ALL job_id 537704 Using where; Using temporary; Using filesort
1 SIMPLE jobs eq_ref PRIMARY,address_id_indexPRIMARY 4 557574_dev.details.job_id 1 Using where
1 SIMPLE addresses eq_ref PRIMARY PRIMARY 4 557574_dev.jobs.address_id 1 Using where
1 SIMPLE states eq_ref PRIMARY PRIMARY 1 557574_dev.addresses.state_id 1 Using where
1 SIMPLE cities eq_ref PRIMARY PRIMARY 4 557574_dev.addresses.city_id 1
1 SIMPLE jobs_skills ref Job_skill Job_skill 4 557574_dev.jobs.id 4 Using index
1 SIMPLE users eq_ref PRIMARY PRIMARY 3 557574_dev.details.user_id 1
見て、EXPLAIN
言うことは可能ですか
- 全表スキャンが発生している場合
- 関連する切り込みが欠落している場合
- どのテーブルまたは結合が非常に遅いか
- 「遅いテーブルを見つけるための私の探求」における他の有用な情報
更新:group_by(および関連するテーブル結合)なしでクエリを再実行します。まだ一時テーブルとファイルソートが必要なので、インデックスの問題のようです。欠落しているインデックスのすべてのテーブルを調べ始めます。