如何在ClickHouse中创建主键

时间:2016-07-31 14:08:07

标签: database columnstore clickhouse

我在文档中找到了一些示例,其中通过将参数传递给ENGINE部分来创建主键。 但是我没有找到关于ENGINE的任何参数的任何描述,它意味着什么以及如何创建主键。 提前致谢。将此信息添加到它不存在的文档中会很棒。

1 个答案:

答案 0 :(得分:5)

MergeTree存储引擎系列支持主键。 https://clickhouse.yandex/reference_en.html#MergeTree

  

请注意,对于大多数严肃的任务,您应该使用来自的引擎   MergeTree家族。

它被指定为存储引擎的参数。

  

引擎接受参数:包含日期的Date类型列的名称,采样表达式(可选),定义表主键的元组以及索引粒度。

     

没有采样支持的示例:

MergeTree(EventDate, (CounterID, EventDate), 8192)
  

采样支持示例:

MergeTree(EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID)), 8192)

因此,(CounterID, EventDate)(CounterID, EventDate, intHash32(UserID))是这些示例中的主键。

使用ReplicatedMergeTree时,还有两个附加参数,用于标识分片和副本。

https://clickhouse.yandex/reference_en.html#Creating%20replicated%20tables

在创建表时指定了主键,以后无法更改。

尽管有名称,但主键并不是唯一的。它只是以最佳方式定义数据的排序顺序以处理范围查询。您可以向表中插入许多具有相同主键值的行。