ClickHouse之Join表引擎达到提高查询速度的目的

ClickHouse之Join表引擎

之所以使用join表,是因为对于大批量数据的关联查询速度会变慢,而join表将数据存储在内存上,提高了查询速度。

CREATE TABLE join_tb1 (
id UInt8,
name String,
time Datetime
) ENGINE = Log
INSERT INTO TABLE join_tb1 VALUES 
(1,'ClickHouse','2019-05-01 12:00:00'),   
(2,'Spark', '2019-05-01 12:30:00'), 
(3,'ElasticSearch','2019-05-01 13:00:00');
INSERT INTO TABLE join_tb1 VALUES (10,'StarRocks','2020-05-01 12:00:00')
CREATE TABLE id_join_tb1 (
id UInt8,
price UInt32,
time Datetime
) ENGINE = Join (ANY, LEFT, id);
INSERT INTO TABLE id_join_tb1 VALUES 
(1,100,'2019-05-01 11:55:00'),
(1,105,'2019-05-01 11:10:00'),
(2,90,'2019-05-01 12:01:00'),
(3,80,'2019-05-01 13:10:00'),
(5,70,'2019-05-01 14:00:00'),
(6,60,'2019-05-01 13:50:00');

不建议使用join进行关联查询,速度没有变化

SELECT id,name,price FROM join_tb1 ANY LEFT JOIN id_join_tb1 USING (id);

推荐使用joinGet方法进行关联查询,提高了查询速度

SELECT joinGet ('id_join_tb1', 'price', toUInt8 (1));

我们可以在sql前面增加explain 查询sql的执行步骤发现joinGet步骤少于left join
 

SELECT id,name,joinGet ('id_join_tb1', 'price', id) as  price FROM join_tb1 ;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值