我在下面的两个查询和相同的执行计划中都得到相同的结果,有什么区别吗?还是我更喜欢写查询?
SELECT PS.StepID,PR.ProgramID FROM ProgramSteps PS, Programs PR
WHERE PS.ProgramID = PR.ProgramID
SELECT PS.StepID,PR.ProgramID FROM ProgramSteps PS
INNER JOIN Programs PR ON PS.ProgramID = PR.ProgramID
Run Code Online (Sandbox Code Playgroud)
小智 5
区别在于,第一个选项通过在where子句中表达联接条件来隐藏意图。
第二种选择是写出连接条件,这对于阅读查询的用户来说更为清楚。它显示查询的确切意图。
至于性能或其他差异,应该没有任何差异。在大多数RDBMS中,这两个查询应返回完全相同的结果,并执行相同的结果。
正如@Tim Biegeleisen在评论中所说:
从ANSI-92 SQL标准开始不推荐使用逗号版本