如: a inner join b on condition1 left outer join c on condition2
inner join d on condition3
其执行连接的顺序是什么?如果各个表的大小不一样,那么应该遵循什么规则才能达到最快速度?
不好意思,在书上找不到,就上来问啦。另外,where子句里的各个条件语句放置顺序是否对查询有影响?
...全文
28621打赏收藏
请问在一个查询里表连接的顺序对查询的性能是否有影响?
如果有影响,我想问连接时的顺序是从左到右还是从右到左? 如: a inner join b on condition1 left outer join c on condition2 inner join d on condition3 其执行连接的顺序是什么?如果各个表的大小不一样,那么应该遵循什么规则才能达到最快速度? 不好意思,在书上找不到,就上来问啦。另外,where子句里的各个条件语句放置顺序是否对查询有影响?
实际上ON后面的条件内容也很重要。
通常在表连接时,一般采用
A LEFT JOIN B ON A.id=B.id
如果可能写成
A LEFT JOIN B ON A.id=B.id AND A.Name=B.Name AND A.Date=B.Date ...
虽然 A.id=B.id 就一定决定 A.Name=B.Name AND A.Date=B.Date
但是还是劝你写的繁一点,这样在你联接N多个表或数据量较大时,你的查询时间会少很多。
血的教训呀~~~