Creating a second table with a different primary key.用不同的主键建立多个表,这样子的话那就考虑两张表的数据同步问题,如果这样实现可以试下物化视图
Creating a materialized view on our existing table.建立物化视图:比上一种我们不需要考虑两张表的数据同步,物化视图会自动同步。
Adding a projection to our existing table.建立投影(还不会,不知道怎么评价)
这三种我都没用过,感觉有点麻烦
键列之间的基数差越大,这些列在键中的顺序就越重要。
2、set:
ALTER TABLE skip_table ADD INDEX vix my_value TYPE set(100) GRANULARITY 2;<br>
复制代码
这种轻量级索引类型接受单个参数max_size,这种索引会将指定颗粒中的所有不同值存储起来,如果不同值数量超过了max_size,该索引就不生效。
ClickHouse 在使用 where 条件查询时,如果遇到了 set 类型的跳数索引,则会检查 where 条件中的值是否在 set 集合中,如果不在就跳过这些颗粒。适合聚集那种的,特别是枚举的,例如省份3、布隆过滤器
布隆过滤器tokenbf_v1:
这是按照token进行分词的布隆过滤器索引,它会将长文本中的单词按照非字母数字字符(如空格、数字、汉字)进行分词,每个分词就是一个token,然后这个token映射到布隆过滤器的bitmap中。
举个例子, https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-data_skipping-indexes这个字符串,经过分词后,会变成如下的token