Clickhouse的主键索引是一个稀疏索引, 它并不存储每一个行的数据, 而是存储每个子矩阵的第一个行数据, 因此8192行数据才会有一个索引值, 索引非常小, 对应的代价就是查找时, 需要用折半查找的方式来查询具体的编号, 复杂度为log(n)

主键索引可以是组合索引, 类似于mysql的组合索引, CK在查询时也必须满足最左匹配原则, 即查询时必须从最左的字段匹配起, 一旦有跳过字段方式, 索引将无法命中.

 

 

经测试发现与上述结论基本一致,当使用order by的第二个字段查询的时候,效率和不加索引时效率基本一样,甚至会稍微拉低效率;clickhouse写入磁盘的时候,是按照order by的字段写入的,比如order by (a,b),如果a字段相同,则再按照b字段排序写入磁盘;

注意,当a和b两个字段内容完全一样的时,查询的效率也是很快的,因为磁盘索引和写入数据是完全一样的,此时where b字段同样能达到索引的效果;

当where条件使用模糊查询,大于、小于、不等于时,此时可能不会走索引(简单测试,没有走索引,没有进行细测),可能和mysql索引一致

 参考:

https://clickhouse.com/docs/zh/engines/table-engines/mergetree-family/mergetree#primary-keys-and-indexes-in-queries (官网)

clickhouse的索引结构和查询优化
深入浅出Clickhouse: 索引结构设计 (可关注下)

深入浅出Clickhouse: MergeTree引擎设计

原文地址:http://www.cnblogs.com/-courage/p/16784947.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性