00:00
那接下来我们看另外一个啊,消除只查询的重复字段,啥意思呢?这边我写了一个语句,那是什么呢?一张表,His left doing上,然后一个子查询,查谁呀,Visit。他称表B,那这个时候呢,我特意写了一个地方,这。只查询是不是有两个字段是一模一样的,对吧,如果是hi是不是不会管你啊。是不是两列你写的多少我都给你展示出来,那他不会啊,他会默认把你这种情况认为是你写错。它只会闪,呃显示一个来,我们直接看语法,它会语法把你优化掉,来你对比一下。哎,其实直接看就知道,你看只查询里面知道还剩几个一个,他把重复的帮你去掉,你原来是不是写了俩是吧,从这你可以看到,所以你要注意啊,为什么要说这个呢?你想想,如果你的实际业务场景,你真的就是想写两个字段。
01:04
那你得想一想行不行,对吧,你到时候。啊,有同学说重命名来,那我们来试一下as。哈哈,是吧是吧,还有个试试。有吗?你以为重命名就完事了,就像你犯罪了,你是不是跑路啊,你跑路,你以为你换个名字,你现在叫你叫比如说你姓王,王某对吧,王王某某,现在你改名我叫王谦,对吧?你以为别人就找不到你了吗?对吧?你是不是有照片,有人脸数据啊,有身份证号,有手机号啊,有银行卡呀,你换个网名,换个昵称有啥用啊,对吧,你是跑不出制裁的啊行,那我们再接着看一个叫位置下推,还我之前是不是给过你们一个have位置下推总结啊,对吧?但是这个没有那么复杂啊,为什么呢?因为你在on的条件里面,如果是join,然后再做一个on的话,是不能写那种判断条件的,你只能写关联条件。
02:18
啊,所以没有存在说我写在on跟写在where有什么区别,但是有个东西有区别,Having。艾艾,执行顺序是在哪,是不是咱们查询结果出来之后,他才去过滤啊,这是跟V的一个区别对吧?那你想想,对于咱们查询分析来讲,提前过滤好呢,还是事后过滤好?肯定是提前好,但是如果你就是写法写的heavy,那它能自动把having帮你优化成提前V。啊,这就是他这边能做到的一些事啊,来我们来试一下这个语句啊,这个语句很简单,查询这张表的一个U览ID字段,然后呢,最后用的是heavy过滤谁啊用户ID,来我们投一眼,你让他变成了什么?
03:13
没有对吧?提前过滤,这是一个位置下推啊,还记得位持下推的概念吗?一个原则就是能提前过滤,自动帮你提前过滤对吧?如果是have,就是在map的阶段过滤对吧?好,那除了这个只查询行不行?什么意思啊,我我什么s selectt啊,直接看例子吧,不写了,你看s select新FROM1张只查询的表。我查完之后我再来喂。如果你看这个语法,如果是害它是怎么样,是不考虑什么,为不为词,它是先把这张表先查出来,查完之后再根据你外面的V再去过滤,对吧。
04:02
那你想想另一种写法是什么?我把这个where写在这个子查询里面,效率是不是更高一点,对吧?那如果在click house这种情况,它会自动帮你优化成最优的方式,也就这个where是不是提前做啊?来,我们瞅一眼,还是用执行计划优化语法来看,呃。你看这个位旁这里是帮你加了一个,但是他有一个比较挫的地方是什么,原来的地方他不会把它删掉,还在,但是他至少提前帮你做。这是它的一个优化位置下推子查询里面,那我们还可以来看看更复杂的一个例子,呃,这边我做了一个什么呢?这是一个子查询,然后这个子查询union or上。啊,不是啊,这只查询得到一张表,这个是不是一张表啊,这个表A啊,这是临时表T1啊,那这个呢,是不是临时表T2。
05:05
然后这个是一张表,我叫B,一根B是不是做了一个union or?好,那现在两个子查询,我是union or,之后过滤,大家想想如果是氦这种语法,这个过滤什么时候执行?是不是优炼完啊,对吧,用炼完之后才过滤的,那这样效率是不是极差,那你看如果按照位置下推的概念,我们希望在哪开始过滤啊,是不是在T1T2就开始过滤啊,对吧?那我们来看看一个效果它能不能做到。来,仔细看。他加了几个位啊,加了三个,他把能加的地方全给你加上这个,哦对,这里还有一个,然后最后一个,这个是原来的嘛,对吧,克里卡就这样,就是大家知道克里卡号是哪个国家的啊,战斗民族对吧,就是很粗暴很直接啊。
06:14
很直接是吧,他也不会考虑说这样不优雅,那管你那么多效果实现的就行了,你想那么多干啥?但所以这个如果是早期一点的版本,只查询的话,它不一定能帮你为此下推,但是至少在咱们用的二零系列是没毛病的,包括二一就更不用讲,我说的早期版本指的是什么,什么18开头的,19开头的这种啊,这是比较古老的。一般没有人用,大家注意click house现在关注度这么高,活跃度这么高,他甚至是那个get Hu上面的热度社区活跃排名曾经排到第一过啊,那也就所以他最近更新迭代特别快,你会发现一个月甚至发一个小版本。
07:02
一个月发一个小版本都有,所以你不至于说用那么古老的版本,而且你项目啥时候开始做的,今年也没毛病,那去年也行,假设是去年20年啊,下半年开始做,那早就二零系列了,同学们你不信的话,我带你们看版本号,这个你们还是得关注一下啊,呃,官网。啊,反正就点击文档,文档点进来是不是一堆菜单呢,你点这个get start,然后有一个安装点一下,你也可以去get hard上面看他打包时间啊,我就不去点了,然后这边它有一个。手动安装就下载离线安装包嘛。呃,这是deb格式的,我不要,我要RPM格式的,好这里也有一个here啊,你点一下,其实这个也一样,也慢了,你看版本啊,呃,我们是二之前是20.4.5.36。
08:08
这几月一月一月不可能吧,六还是七啊六月嘛,我的天呐,同学们,这玩意儿六月啊,你至少要认识这个,说起来这个这个几月这个呢,这个啊对,没毛病,这个。这个这不都认识嘛,对吧,这虽然不要求你英语水平多高,但常用的一些缩写你要认得啊,你看20年6月距离现在是不是一年多了。可以吧,那如果你看啊,我们有一个重大改变,可以查询执行计划,是不是这个版本20.6.3.28呀,这几月八月,你说你一开始装的这个版本行不行啊,可以啊,没毛病啊,八月到现在也快一年了嘛,对吧,早期是调研嘛,后来就正式上线的时候确定版本是这个,这有毛病吗?
09:24
那我现在找的是,现在给大家是,哎,我的天昨天还没有,现在就有了。你看现在又出了一个最新版了,19号昨晚老婆昨天11点出的太过分了,那我这文档就不能说目前最新版了,对吧?嗯。被他摆了一道啊行,呃,这是一个位置下推,对吧,位置下推。
我来说两句