我有4個表MYSQL連接查詢優化與多tablesU
類,考試,問題意識,UserResponses
Class -> ID , Name
Exam -> ID,Name,Class_ID_FK
Questions -> ID,Question,Exam_ID,FK
Answers -> ID,Answer,Question_ID_Fk
UserResponses -> ID,UserID,Answer_ID_fk,Question_ID_fk
我想獲取所有用戶寄託給定class.I都的所有考試寫了一個查詢,但我想看看別人的建議,如果我正確的方向走,因爲這個查詢的500個實例可能同時在我的系統中運行。
select r.answer_id_fk,r.userid,q.question,a.answer,e.name,e.class_id_fk
from Exams e
join Questions q on q.exam_id_fk = e.id
join Answers a on a.question_id_fk = q.id
left join UserResponses r on r.answer_id_fk = a.id
where e.class_id_fk =105585;
我認爲這最終會經歷數據庫中的所有行,最終可能會崩潰。
解釋顯示了這一點。它返回了35行,這是正確的。我在問題表中有18091行.20423在回答中。並在答案中爲'67108'。
1, SIMPLE, a, ALL, , , , , 67108,
1, SIMPLE, q, eq_ref, PRIMARY, PRIMARY, 25, db_qa_dev.a.question_id_fk, 1,
1, SIMPLE, c, eq_ref, PRIMARY, PRIMARY, 25, db_qa_dev.q.category_id_fk, 1, Using where
1, SIMPLE, r, ref, ANSWERID_INDEX, ANSWERID_INDEX, 26, db_qa_dev.a.id, 15, Using index
這不是租賃編碼器 - 顯示你已經完成了一些工作。 –
如何發佈您的查詢?然後我們可以提出更多的建議。 – Bojangles
@JamWaffles已發佈查詢。 –