首页/数据/数仓建模速查/拉链维度关联的性能约束
维度与事实设计149 条

拉链维度关联的性能约束

事实关联拉链维度时必须带业务时间区间条件,禁止只按自然键 join;为 (自然键, start_date, end_date) 建联合索引。

数仓建模速查数据更新于 2026-10-12
join必须带时间区间
索引自然键+起止日期
分区拉链表通常不按时间分区

标准关联

标准关联
SELECT f.order_id, d.tier
FROM fact_order f
JOIN dim_user d
  ON f.user_id = d.user_id
 AND f.order_time >= d.start_date
 AND f.order_time <  d.end_date;
遗漏区间条件会让 join 行数按版本数成倍放大。

易错点

  • 只按自然键 join,结果行数爆炸
  • 当前行判断用 end_date is null,索引失效

数据来源与参考

  • 拉链表实现实践:性能
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌