使用Mysql Server 5.5。
假设我有两个相同的表名为foo1和foo2,其中包含以下列:
姓氏varchar(20) idnum int(20)
我希望加入两个表,其中idnum = 5
现在如果我使用以下代码实现它:
select * from foo1
join foo2 on foo1.idnum=foo2.idum
where foo1.idnum5;
它是否首先连接表中的所有行,然后才过滤where并返回idnum5的行?
如果它是真的那么我应该像那样实现它:
select * from foo1
join foo2 on foo2.idnum=5
where foo1.idnum=5
这个实现是一个更快的加入?有什么不同吗?
我正在尝试了解它是如何实际工作的,以了解这是否是优化我的连接查询的一种方法。
非常感谢有关该问题的任何信息。
谢谢!
答案 0 :(得分:0)
连接的流程只是为了预先确定表之间的关系以进行最终限定。 WHERE子句实际上开始应用哪些记录作为PRIMARY提取,并希望结构化利用索引来优化WHERE部分中引用的任何表的有限记录。
从这个结果中,连接被应用(或左连接/右连接),如果在相应的允许THOSE记录中找到,则否则从主要数据集中排除WHERE子句允许通过。 / p>