sql 用逗号和内联外联效率的区别
2013-07-21
展开全部
两个表的情况下:
SELECT ... FROM a, b WHERE a.id = b.aid
和
SELECT ... FROM a JOIN b ON ( a.id = b.aid )
效果是一样的。 执行计划什么的, 没什么区别的。
多个表的情况下:
SELECT ... FROM a, b, c, d WHERE a.id = b.aid and a.id = c.aid and c.id = d.cid
和
SELECT ... FROM
a JOIN b ON (a.id = b.aid )
JOIN c ON (a.id = c.aid )
JOIN d ON (c.id = d.cid )
就可能会存在差别。
因为 FROM a, b, c, d WHERE ......
这种写法, 先关联哪2个表, 是数据库去判断处理的。
而 a JOIN b ON (...) JOIN c ON(...) JOIN d ON(...) 这个 JOIN 的顺序, 是由写 SQL 语句的人来判断的。先哪2个表先 JOIN.
SELECT ... FROM a, b WHERE a.id = b.aid
和
SELECT ... FROM a JOIN b ON ( a.id = b.aid )
效果是一样的。 执行计划什么的, 没什么区别的。
多个表的情况下:
SELECT ... FROM a, b, c, d WHERE a.id = b.aid and a.id = c.aid and c.id = d.cid
和
SELECT ... FROM
a JOIN b ON (a.id = b.aid )
JOIN c ON (a.id = c.aid )
JOIN d ON (c.id = d.cid )
就可能会存在差别。
因为 FROM a, b, c, d WHERE ......
这种写法, 先关联哪2个表, 是数据库去判断处理的。
而 a JOIN b ON (...) JOIN c ON(...) JOIN d ON(...) 这个 JOIN 的顺序, 是由写 SQL 语句的人来判断的。先哪2个表先 JOIN.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询