V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dollck
V2EX  ›  数据库

Clickhouse 创建索引问题

  •  
  •   dollck · 2023-01-20 22:15:34 +08:00 · 1937 次点击
    这是一个创建于 699 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬好,本人刚接触 Clickhouse ,如有不对的地方请多多谅解。

    是这样。我的业务表有五个字段:Email,Name,Username,Nums,Date 我们需要分别通过 Email,Name,Username 三个字段来构造过滤 所以我需要分别为这三个字段做索引

    我了解到建表 order by 但只对第一个字段起效果 有方法可以实现各自索引吗?

    (ps:没有时间做系统的学习,自己查过好多遍但这方面信息有点少而且找不到我要的)

    十分感激

    以下贴出我的建表语法

    CREATE TABLE mytable
    (
        Email LowCardinality(String),
        Name LowCardinality(String),
        Username LowCardinality(String),
        Nums UInt32,
        Date LowCardinality(String)
    )
    ENGINE = MergeTree
    ORDER BY (Email,Name,Username);
    
    第 1 条附言  ·  2023-01-20 23:16:19 +08:00
    数据补充:
    数据大小:10-20GB
    数据行数:2.1 亿
    使用第一字段查询返回大概在几十 ms ,其他字段 8s 左右
    12 条回复    2023-01-22 21:16:20 +08:00
    Terminator0826
        1
    Terminator0826  
       2023-01-20 22:38:48 +08:00 via Android
    我也用得不熟,如果只是用来检索的话应该不用关心索引的问题,感觉 clickhouse 每个字段都是索引,大数据量用哪个字段查询都不慢
    dollck
        2
    dollck  
    OP
       2023-01-20 23:14:44 +08:00
    @Terminator0826 我用第一个字段查询基本几十 ms 但是其他字段要 8s
    Terminator0826
        3
    Terminator0826  
       2023-01-20 23:26:38 +08:00 via Android
    @dollck 你第一个字段查询和其他字段查询返回的行数差别大吗
    dollck
        4
    dollck  
    OP
       2023-01-20 23:27:38 +08:00
    @Terminator0826 都只有一行
    zeldasalor1
        5
    zeldasalor1  
       2023-01-21 00:07:40 +08:00   ❤️ 1
    用 projection, 空间换时间,飞一样的速度,两条命令很简单
    https://zhuanlan.zhihu.com/p/404851831
    zeldasalor1
        6
    zeldasalor1  
       2023-01-21 00:12:35 +08:00
    而且这个是对检索自动优化的,去找过滤列对应的存储,实测好用
    dollck
        7
    dollck  
    OP
       2023-01-21 11:03:21 +08:00 via iPhone
    @zeldasalor1 谢谢您,我会尝试一下
    dollck
        8
    dollck  
    OP
       2023-01-21 18:13:32 +08:00
    @zeldasalor1 我采用了您的方法,确实奏效,感谢!
    chrisliu1314
        9
    chrisliu1314  
       2023-01-21 22:51:53 +08:00 via iPhone
    Clickhouse 可以建立二级索引的,可以看看官方文档。这里可以为 name username 分别建立二级索引
    aimiyooo
        10
    aimiyooo  
       2023-01-22 10:49:49 +08:00
    可以建多个索引,一般把常用的并且基数大的字段作为前面的索引,这样可以过滤大部分的数据
    ilylx2008
        11
    ilylx2008  
       2023-01-22 21:15:47 +08:00
    如果不能再加索引,可以建 3 个表,分别用不同的索引,哈哈
    ilylx2008
        12
    ilylx2008  
       2023-01-22 21:16:20 +08:00
    不过 clickhouse 不是给高并发的场景用的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5279 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:58 · PVG 13:58 · LAX 21:58 · JFK 00:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.