内连接和外连接效率比较
两表连接查询:对两表求积(笛卡尔积)并用ON条件和连接连接类型进行过滤形成中间表;然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。
如果有2张表的数据一一对应,而且从查询结果上看,内连接和外连接查询结果完全一样。
那么我想问,它们的效率一样吗?
如果按照上一句话,两表连接 先是先求笛卡尔积 这个过程并不能体现 内连接和外连接的区别。
我的猜想是 他们的效率差别 体现在 on 条件的约束上,在对on条件做过滤的时候,外连接比内连接要多做一部 if null 的动作。
所以我想知道,外连接究竟比内连接耗费在哪里,或者他们的效率一样?
此外还有个小问题
把一些条件写在 inner join on 后面 ,如 t1.a=1 之类,能实现在做笛卡尔积之前的过滤吗?
|