INNER JOIN USING和INNER JOIN ON之间是否存在性能差异?

时间:2013-09-26 20:44:51

标签: postgresql

假设有两个表:

students (student_id INT, class_id INT);
instructors (instructor_id INT, class_id INT);

这两者之间是否有性能差异:

SELECT * FROM
students INNER JOIN instructors USING (class_id);

SELECT * FROM
student INNER JOIN instructors ON students.class_id = instructors.class_id;

1 个答案:

答案 0 :(得分:1)

我会说,一般来说,没有性能损失,而我更喜欢第一个更尖锐。甚至:

SELECT * FROM
students NATURAL INNER JOIN instructors;

一如既往explain,常识是您的完美指南。可能存在NATURAL不完全符合您需要的情况,因为它会自动选择具有相同名称的所有字段。在某些情况下USING不包含您的加入规则。我个人尝试尽可能少地编写代码,使其尽可能可读。像NATURALUSING这样的东西只是一种语法糖,使我的代码更具可读性。