我有三个表,这些字段:哪一个查询具有更好的性能?
类: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