ClickHouse查询条件如果不涉及主键,是否适用?谢谢
发布于 22 天前 作者 kainever7 218 次浏览 来自 问答

看了官网上对MergeTree的介绍,发现ClickHouse查询是基于主键稀疏索引定位到查询到对应的块,这样查询才快。 但是在实际的使用中,过滤条件不可能都包含主键。是不是不包含主键,clickhouse就不能用? 我们的场景是一张大宽表-用户标签表,上百列,查询条件是不固定的,基于各种字段组合来进行统计,比如:

  1. 性别=男&&年龄 = 青少年
  2. 城市 in (北京,上海,深圳) && 使用时长 10
  3. 开机时间 in … || 流失时长 > …
  4. 年龄 != 青少年 && 已婚 … … 等等 各种条件组合来统计。 这种数据,指定主键也只能指定用户ID,但是用户ID在业务上基本不会作为条件,是不是这种场景不合适?
1 回复

CH性能好确实主要靠主键查询条件,要注意主键可以是单列,也可以是组合的几列。 看你的实际业务描述,是不是可以按照维表/事实表的角度设计表。 比如用户,性别,年龄,已婚,居住城市这些都算是基本用户信息,改动不频繁,属于用户角度的维表。 至于开机时间,使用时长等属于日志信息事实表。 你可以把各种业务条件做下分析,使用子查询结合连接查询来提高性能。 维表的查询结果集合应该不大,只是整个表的很小比例才适用。 以上只是我的直观感觉,仅供参考。

回到顶部