This topic has been archived. It cannot be replied.
-
工作学习 / 专业技术讨论 / 也问个SQL问题: 怎么写inner join 好 -- 1 select a.name, b.age from a, b where a.id = b.id; 还是 2 select a.name, b.age from a inner join b on a.id = b.id? 我一直用1, 以前的外行team leader态度恶劣地让我改, 我拿着SQL92把他顶回去了其实我自己也不是太懂, 只明白1 implicit 2. 现在倒没人让我改了, 但是我看有的同事所有SQL都是按2写, 所以也动心了....
-springtime(秋高气爽);
2006-10-17
{112}
(#3268580@0)
-
我觉得2比较规范, 但是我个人很少这么写, 因为习惯了不容易改, 改了看着不顺眼. 你要是能改还是改过来的好.
-poohbear(毛毛熊);
2006-10-17
(#3268597@0)
-
(2)用join 比(1)用where语句运行快.
-digitworm(digitworm);
2006-10-17
(#3268674@0)
-
如果是ORACLE,这两种写法最终产生的执行计划是一样的。但写法2符合ANSY标准,比较好读。WHERE CLAUSE专门写FILTER, FROM CLAUSE 专门写连接, 看起来清楚。
-newkid(newkid);
2006-10-17
(#3268710@0)
-
多谢!
-springtime(秋高气爽);
2006-10-17
(#3268786@0)
-
这两个简单的QUERIES的结果和运行速度都一样因为现在的DB系统的OPTIMIZER都会对这两个QUERIES生成同样的PLAN. 但如果对复杂一点的NESTED JOIN不同的写法会影响有些DB系统的OPTIMIZER的结果. 就对这两个QUERIES, 第1个QUERY清晰易写. 但是如果使用INNER JOIN 是整个TEAM的STANDARD, 那你是应该FOLLOW. 这毕竟会养成个习惯, 在写复杂的JOIN时也不会忘记使用"INNER JOIN".
"我拿着SQL92把他顶回去了 " - 是没必要的. 要尊重TEAM里旧有的习惯.它们通常是有一定道理的或者来历的.TEAMPLAYER很重要.
-looi500(looi);
2006-10-18
{469}
(#3269768@0)
-
多谢! 我也解释一下, 以前的TEAM里只有三个人, 规范倒很齐很严, 我是唯一写程序的, 所以觉得都是给我定的. 现在的TEAM大了, 大家都是内行, 一点规矩都没有, 我倒想改进了....
-springtime(秋高气爽);
2006-10-18
(#3270534@0)
-
以前用where,现在全改了用join,当多个表的时候清楚多了。
-xfile(xfile);
2006-10-18
(#3270070@0)
-
写法2的好处:FULL OUTER JOIN 只能用写法2, 在WHERE中写不出来。除非写两个子查询再UNION起来。
-newkid(newkid);
2006-10-18
(#3270522@0)
-
第一种写法是inner join的简单写法,当然不能取代outer join.
-looi500(looi);
2006-10-18
(#3270722@0)
-
多谢楼上各位!
-springtime(秋高气爽);
2006-10-18
(#3270536@0)