|NO.Z.00040|——————————|BigDataEnd|——|Hadoop&OLAP_ClickHouse.V12|——|ClickHouse.v12|ClickHouse语法|Prewhere子句|

一、PREWHERE 子句
### --- PREWHERE子句

~~~     Prewhere是更有效地进行过滤的优化。 
~~~     默认情况下,即使在 PREWHERE 子句未显式指定。 
~~~     它也会自动移动WHERE 条件到prewhere阶段。 
~~~     PREWHERE 子句只是控制这个优化,如果你认为你知道如何做得比默认情况下更好才去控制它。
~~~     使用prewhere优化,首先只读取执行prewhere表达式所需的列。 
~~~     然后读取运行其余查询所需的其他列,
~~~     但只读取prewhere表达式所在的那些块 “true” 至少对于一些行。 
~~~     如果有很多块,其中prewhere表达式是 “false” 对于所有行和prewhere
~~~     需要比查询的其他部分更少的列,这通常允许从磁盘读取更少的数据以执行查询。
hadoop01 :) select WatchID,Title,GoodEvent from hits_v1 where JavaEnable=1;
6535088 rows in set. Elapsed: 40.853 sec. Processed 8.87 million rows, 863.90 MB (217.22 thousand rows/s., 21.15 MB/s.)

hadoop01 :) select WatchID,Title,GoodEvent from hits_v1 prewhere JavaEnable=1;
6535088 rows in set. Elapsed: 22.150 sec. Processed 8.87 million rows, 863.90 MB (400.62 thousand rows/s., 39.00 MB/s.)

hadoop01 :) select WatchID,Title,GoodEvent from hits_v1 where JavaEnable=1;
6535088 rows in set. Elapsed: 35.728 sec. Processed 8.87 million rows, 864.55 MB (248.38 thousand rows/s., 24.20 MB/s.)

hadoop01 :) select WatchID,Title,GoodEvent from hits_v1 prewhere JavaEnable=1;
6535088 rows in set. Elapsed: 32.021 sec. Processed 8.87 million rows, 863.90 MB (277.13 thousand rows/s., 26.98 MB/s.)
### --- 手动控制Prewhere

~~~     该子句具有与 WHERE 相同的含义,区别在于从表中读取数据。 
~~~     当手动控制 PREWHERE 对于查询中的少数列使用的过滤条件,
~~~     但这些过滤条件提供了强大的数据过滤。 这减少了要读取的数据量。
~~~     查询可以同时指定 PREWHERE 和 WHERE. 在这种情况下, 
~~~     PREWHERE 先于 WHERE.如果 optimize_move_to_prewhere 设置为0,
~~~     启发式自动移动部分表达式 WHERE 到 PREWHERE 被禁用。
### --- 限制

~~~     # PREWHERE 只有支持 *MergeTree 族系列引擎的表。
[root@hadoop01 ~]# vim /var/log/clickhouse-server/clickhouse-server.log
 
2021.11.05 13:36:24.818179  [ 13472 ] {6f7289cb-4332-4cfd-a1ac-aa98025bf56f} <Debug>
InterpreterSelectQuery: MergeTreeWhereOptimizer: condition "JavaEnable = 1" moved to PREWHERE

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(37)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示