首页/数据/NoSQL 速查/跳过索引(skip index)设计
本包目录(322 条)
MongoDB99 条Elasticsearch89 条
ClickHouse56 条
时序与列式28 条选型与架构50 条

跳过索引(skip index)设计

跳过索引不定位具体行,只帮引擎跳过大块 granule:常用 minmax、set、bloom_filter、ngrambf_v1/tokenbf_v1;列数据越有序,收益越明显。

NoSQL 速查数据更新于 2026-10-12
类型minmax(范围)、set(N)(低基数枚举)、bloom_filter、ngrambf_v1(子串检索)、tokenbf_v1(分词)
定义ALTER TABLE t ADD INDEX idx expr TYPE bloom_filter GRANULARITY 4
验证EXPLAIN indexes = 1 查看 Indexes 段落中跳过的 granule 数

示例

示例
ALTER TABLE events ADD INDEX idx_type event_type TYPE set(100) GRANULARITY 4;
ALTER TABLE events ADD INDEX idx_msg msg TYPE ngrambf_v1(3, 10000, 3, 0) GRANULARITY 4;
ALTER TABLE events MATERIALIZE INDEX idx_msg;

EXPLAIN indexes = 1 SELECT count() FROM events WHERE event_type = 'click';
跳过索引只在数据量大且条件选择性高时有效,小表或全量扫描场景提升有限。

易错点

  • GRANULARITY 越大越省索引空间但跳过粒度越粗,需按查询验证参数
  • 索引进索引字段的函数表达式如果与查询写法不一致就无法命中,两侧要保持一致

数据来源与参考

  • ClickHouse Docs: Data skipping indexes
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌