这两个SQL
语法产生相同的结果,哪一个更好用,为什么?
第一
SELECT c.Id,c.Name,s.Id,s.Name,s.ClassId
FROM dbo.ClassSet c,dbo.StudentSet s WHERE c.Id=s.ClassId
第二
SELECT c.Id,c.Name,s.Id,s.Name,s.ClassId
FROM dbo.ClassSet c JOIN dbo.StudentSet s ON c.Id=s.ClassId
答案 0 :(得分:3)
2:nd更好。
您在考虑过时的第一个查询中加入的方式。避免使用,
并使用JOIN
“就优先级而言,JOIN的ON
子句发生在WHERE
子句之前。这允许LEFT JOIN b ON a.id = b.id WHERE b.id IS NULL
之类的东西检查b中没有匹配行的情况。“
“使用,符号类似于同时处理WHERE
和ON条件”
在此处找到有关它的详细信息,MySQL - SELECT, JOIN
阅读有关SQL标准的更多信息
答案 1 :(得分:1)
SELECT c.Id,c.Name,s.Id,s.Name,s.ClassId FROM dbo.ClassSet c JOIN dbo.StudentSet s ON c.Id=s.ClassId
毫无疑问,与你的第一个相比,上面的一个更好。在优先表中,“On”坐在第二个,“Where”在第四个
但是对于更简单的查询,你不想像这样打破你的头脑,对于项目级别“JOIN”总是被推荐
答案 2 :(得分:0)
点击此链接Is a JOIN faster than a WHERE?
回答@MehrdadAfshari
理论上,不,它不应该更快。查询优化器 应该能够生成相同的执行计划。但是,有些 数据库引擎可以为其中一个生成更好的执行计划(不是 可能会发生这样一个简单的查询,但对于足够复杂的查询)。 您应该测试两者并查看(在您的数据库引擎上)。
答案 3 :(得分:-1)
第二个因为它更具可读性。就是这样。