我有两张table
事件
身份证件
操作系统
参数
身份证件
sx公司
sy公司
此表具有id为1-1的关系。如果执行查询
select count(*)
from
(select id from event where os like 'Android%')
inner join
(select id from params where sx >= 1024)
using id
他们很慢
但如果所有数据都包含在一个表中
select count(*) from event where sx >= 1024 and os like 'Android%'
查询执行得非常快。
请告诉我如何使用加入clickhouse数据库有效?把所有的数据放在一个表中是不方便的。
2条答案
按热度按时间tkqqtvp11#
您可以这样重写查询:
agyaoht72#
我在连接两个巨大的分布式表时也遇到同样的问题。主要有两个问题
执行期间
限制查询所需的内存。
对我有效的方法是使用子查询按id%n分片计算查询,然后合并所有结果。
您可以更改id%n(示例中为2),直到获得所需的性能。如果对表使用分布式引擎,则需要将in替换为global in。