首页/数据/NoSQL 速查/投影 projection 加速查询
本包目录(322 条)
MongoDB99 条Elasticsearch89 条
ClickHouse56 条
时序与列式28 条选型与架构50 条

投影 projection 加速查询

投影为表预先维护一份按某查询模式组织的隐藏数据集(含不同排序或预聚合结果),优化器在匹配到查询时自动改用投影,无需改 SQL。

NoSQL 速查数据更新于 2026-10-12
定义ALTER TABLE t ADD PROJECTION p (SELECT … GROUP BY … ORDER BY …)
物化MATERIALIZE PROJECTION 对已有数据回填;新写入自动维护
开关optimize_use_projections 默认开启,可 SET 关闭做对照测试

示例

示例
ALTER TABLE events
ADD PROJECTION proj_user_day
(
    SELECT user_id, toDate(ts) AS d, count() AS cnt
    GROUP BY user_id, d
);

ALTER TABLE events MATERIALIZE PROJECTION proj_user_day;

SELECT user_id, toDate(ts) AS d, count()
FROM events
GROUP BY user_id, d;
投影本质是用写入与存储换查询速度;用 EXPLAIN 确认查询确实使用了投影,而不是走了原表。

易错点

  • 每个投影都会随写入同步维护,投影过多会拖慢写入与合并
  • 查询与投影的聚合粒度不完全匹配时可能不用投影,先核对 GROUP BY 结构

数据来源与参考

  • ClickHouse Docs: Projections
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌