MergeTree的主键使用PRIMARY KEY定义,主键定义好后,根据index_granularity间隔,为数据生成一级索引保存在primary.idx文件中,索引数据按照PRIMARY KEY排序。
1.稀疏索引
primary.idx文件中的一级索引采用稀疏索引实现。
稀疏索引和稠密索引的区别是:
稠密索引的每一行索引标记,都会对应到一行具体的数据记录,8192数据,就是8192行索引;
稀疏索引的每一行索引标记,对应的是一段数据记录。比如8192行数据,可能对应的只有一行索引。
优点:
稀疏索引只需要使用少量的索引标记,就能够记录大量数据的区间位置信息,数据量越大越明显。
由于稀疏索引占用空间少,所以primary.idx内的索引数据常驻内存,查询速度极快。