00:00
那我们现在又要聊到一个东西,位置下推,前面咱们已经聊过位置下推了呗,单单是单表的情况下,哎,我们当时测的是不是heavy,正常执行顺序是比较靠后的,但是它能自动帮我们往前提提前过滤变成V对吧?呃,那在join里面对咱们有啥影响呢?是先join再过滤跟先过滤再join的区别啊,对吧,那我们当然这个没有只查询还看不明显,我们先瞅一眼呗,这个是什么呢?这张表蚯蚓这张表。然后关联条件还是刚才那那个吧,然后加了一个having。过滤一个时间,好,我们看一眼。肯定是带的心嘛,所以字段很多啊,不管了,你看它变成了啥或where,它还不仅仅是变成了wa,然后他又判断这里可以变成preva啊,这是一个,那么还有一个呢?
01:06
大家注意,我现在字段是不一样的。一个是。是什么?一个是左表的条件,一个是右表的条件,对吧,我们看看有啥不一样不。有不一样的地方吗?现在start date应该是谁的?应该是右表的吧,对吧,这是右表的。但至少他也提上来了。他是不是也提上来了,那如果是只查询呢,我们再改造一下呗,呃,我把这一句先改造这一句啊。来,呃。A点一,我再拷贝一个两个做对比啊。呃,那张表呢,这里对吧,我把它改一下。
02:08
只查询。子查询,然后呢,这里我们是select新from这个,然后呢where。说这个。这个能看懂吗?同学们能吧,我是不是在A表里面,我之前是不是把我现在不要黑了,我现在只关注位啊,我只关注where了,我之前是在写在join外面分完之后再过滤,跟我提前在只查询里面过滤,看看有什么区别啊,我们先看一下执行计划,执行计划。XA嘛,这里面是只查询嘛,对吧,我们可想而知这种效率是不是应该高一点,那我们再对比一下,刚才这种里面到底会不会先过滤呢。
03:12
没有吧,对吧?那接下来我们做一个事执行效率的一个对比啊呃,既然是doing,我还是得银色in two进去,对吧,He VR。这样来跑啊来,我们分别执行一下啊,来走走。这个是九秒多过滤条件,在外面都是VR,那再跑另一个在只查询提前过滤。
04:01
七秒多,是不是快了那么一点,但实际上它处理的数据量也差不多啊,也差不多600多万。然后我把这个语句也给到大家吧,省得你们自个儿写啊。那能不能再思考一个问题,能不能像氦普那种泵里边进行过滤?嗯。缝里面进行过滤啊,应该是不可以的啊,来我们试一下,我把这个位改成空,你看它能跑不。啊,不是不是改成on是不是N对吧,相当于说这个条件跟这个条件嘛,看他能不能跑啊。报错了吗?他说这个写法没有什么。
05:01
没有,这个是判断join关联条件了的表达式啊,也就是说其实这个就是不合要求的,在咱们click click house里面,关联条件后是不能用来做过滤的。啊,所以咱们就情况就少多了嘛,情况就少多了,所以总结起来,总结一下来。注意位置下推咱们要干嘛?是不是这个。首先咱们没有own的那个对比跟限制,那接下来咱们首先第一点,如果是having跟where是不是无所谓啊,他会帮我们自动位置下推嘛,那如果是蚯蚓玩,在VR跟子查询里面进行VR效率还是有点区别的吧。总结起来就是尽量在。
06:00
交引之前进行过滤,很明显咱们交引后过滤没有帮我们往前提,对吧,没有帮我们往前提。位置下头这这个这个要注意啊,你看起来得到效果一样,但是一不注意效率就天差地别了。
我来说两句