中间件速查手册
数据仓库与 OLAPORDER BY Key

排序键 是什么?

建表时定的排序键,决定稀疏索引能不能跳过数据

类比:电话簿按姓氏排,找“王”直接翻到 W 段

它决定查询快不快

数据按排序键有序存放,每 8192 行一个 granule,索引里只记每个 granule 的第一行。查询条件命中排序键前缀时,可以直接跳过整个 granule。

所以排序键要按“最常用的过滤条件”设计,且把区分度高的放前面。选错了,索引形同虚设,每次都是全表扫。

和主键的区别

ClickHouse 的 PRIMARY KEY 默认等于 ORDER BY,它不保证唯一,只是索引。写重复的排序键完全合法,这也是为什么需要 ReplacingMergeTree 来做去重。

常见设计

典型写法是 `ORDER BY (tenant_id, event_date, user_id)`:先按租户隔离(大部分查询都带租户),再按时间范围裁剪,最后按用户。前三个字段的顺序就是“查询频率”的顺序。

它出现在这些中间件里

相关问题

相关概念