【发布时间】:2010-09-07 21:04:45
【问题描述】:
在显式和隐式内部连接中是否存在效率差异? 例如:
SELECT * FROM
table a INNER JOIN table b
ON a.id = b.id;
对比
SELECT a.*, b.*
FROM table a, table b
WHERE a.id = b.id;
【问题讨论】:
-
好问题。我很好奇为什么要使用显式连接。没有它就不能进行所有查询吗?
-
使用 EXPLAIN 关键字来了解这两个查询的区别。使用 JOIN 并查看区别。如果您在表中尝试超过 100k 条记录,您可以看到区别...
-
@andrew 我的问题实际上是隐式联接是否是一种“黑客”形式(如“涉及多个表的查询,不使用联接?那是黑客不是吗?” )
-
它们是不同的,隐式连接在处理空值时会时不时地让你吃惊;使用显式连接并避免在“没有任何改变!”时出现的错误!
-
没有区别。
,是CROSS JOIN,绑定较松,INNER JOIN是CROSS JOIN,ON类似于WHERE,但绑定更紧密。对执行而言重要的是 DBMS 如何优化查询。