3.Projection
什么是Projection
投影Projection,Clickhouse通过投影语句,聚合数据
当查询时,聚合条件或排序条件与投影语句相同时,就会命中查询已经聚合好的数据,减少了现查现算的步骤,能够明显加快查询速度
创建projection
-- 修改现有的表
ALTER TABLE 库名.表名
ADD PROJECTION 名字(
投影sql...
);
-- 创建表时 projection
create TABLE 库名.表名(
---...声明表的字段,
PROJECTION 名字(
投影sql...
);
)
物化历史数据
alter TABLE 库名.表名 MATERIALIZE PROJECTION 名字;
删除projection
ALTER TABLE 库名.表名 DROP PROJECTION 名字;
清空projection的数据
ALTER TABLE 库名.表名 CLEAR PROJECTION 名字 [IN PARTITION 分区名];
开启Projection
set allow_experimental_projection_optimization=1;
判断是否命中Projection
-- 强制走projection,如果没有合适的projection,会抛异常
settings force_optimize_projection=1;
用途
使用Projection加速聚合查询
ALTER TABLE 库名.表名
ADD PROJECTION 名字(
select ...
group by ...
);
-- 物化历史数据
alter TABLE 库名.表名 MATERIALIZE PROJECTION 名字;
将Projection当做二级索引使用
-- 使用重排序后的原始数据创建Projection
ALTER TABLE 库名.表名
ADD PROJECTION 名字
(
SELECT ...
ORDER BY ...
);
-- 物化历史数据
alter TABLE 库名.表名 MATERIALIZE PROJECTION 名字;
Loading...