다음 필드가있는 세 개의 테이블이 있습니다.이러한 쿼리 중 성능이 우수한 쿼리는 무엇입니까?
클래스 : class_id | 이름 | 학년
classes_students : class_id | student_id
학생 : student_id | 이름
클래스에는 학생과 n : m 관계가 있으므로 한 클래스에는 많은 학생이 있고 한 학생에게는 여러 클래스를들을 수 있습니다. 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
나는이 질문을 downvoted했습니다. OP 설정은 테스트입니까? OP가 더 나은 성능을 나타내는 이유는 무엇입니까? –