美文网首页
ClickHouse索引查询优化

ClickHouse索引查询优化

作者: 缘木求鱼的鱼 | 来源:发表于2022-09-29 17:31 被阅读0次

索引简介

  • clickhouse主键即索引,不同于mysql,clickhouse主键可以重复
  • clickhouse建表时可以不指定主键,但必须指定排序键,不指定主键时会隐式采用排序键作为主键。
  • clickhouse索引是一种联合索引,遵循最左前缀原则

数据查询流程

  • 数据&索引结构
    • (CounterID,Date) 作为排序键,即联合索引。
    • 标记: 即联合索引。
    • 标记号: 稀疏索引的块号。
      全部数据  :     [-------------------------------------------------------------------------]
      CounterID:     [aaaaaaaaaaaaaaaaaabbbbcdeeeeeeeeeeeeefgggggggghhhhhhhhhiiiiiiiiikllllllll]
      Date:          [1111111222222233331233211111222222333211111112122222223111112223311122333]
      标记:            |      |      |      |      |      |      |      |      |      |      |
                      a,1    a,2    a,3    b,3    e,2    e,3    g,1    h,2    i,1    i,3    l,3
      标记号:          0      1      2      3      4      5      6      7      8      9      10
    
  • 不同过滤条件查询流程
    • CounterID in ('a', 'h'),服务器会读取标记号在 [0, 3) 和 [6, 8) 区间中的数据。
    • CounterID IN ('a', 'h') AND Date = 3,服务器会读取标记号在 [1, 3) 和 [7, 8) 区间中的数据。
    • Date = 3,服务器会读取标记号在 [1, 10] 区间中的数据。

查询优化建议

  • 遵循联合索引适用范围原则,根据常用程度从高到低,将字段设为排序键。
  • 可以考虑建多张表,采用不同排序键已满足需求。
  • 可以考虑添加物化视图的方式,对数据进行预聚合。

相关文章

网友评论

      本文标题:ClickHouse索引查询优化

      本文链接:https://www.haomeiwen.com/subject/ugfrartx.html