我有三個表,這些字段:哪一個查詢具有更好的性能?
類:class_id |名稱|等級
classes_students:class_id | student_id
學生:student_id |名字
班級與學生有一定比例的關係,所以一個班級可以有很多學生,一個學生可以聽很多班級。我想選擇class_id爲5的特定班級的所有學生。
這裏有三個查詢可以做同樣的事情。我針對MySQL最新版本InnoDB引擎運行。哪一個會表現出更好的表現,爲什麼?
查詢A)
SELECT s.name
FROM students s
JOIN classes_students cs ON cs.student_id = s.student_id AND cs.class_id = 5
查詢B)
SELECT s.name
FROM students s
JOIN classes_students cs ON cs.student_id = s.student_id
JOIN classes c ON c.class_id = cs.class_id
WHERE c.class_id = 5
查詢C)
SELECT s.name
FROM students s
INNER JOIN classes_students cs ON cs.student_id = s.student_id
WHERE cs.class_id = 5
在提出的查詢的查詢計劃中可能沒有任何顯着差異。但C是表達查詢內容的最自然的方式;跟着去吧。 – bobince 2010-01-04 10:12:29
我已經低估了這個問題。 OP是否設定爲測試?爲什麼OP沒有告訴我們哪個顯示更好的性能。 – 2010-01-04 10:47:11