let catalog = @joinplan.star_schema_catalog()
let plan = @joinplan.plan_greedy(
catalog,
@joinplan.star_schema_names(),
@joinplan.CostModel::standard(),
)
println(plan.explain())
运行
moon check --target all
moon test --target wasm
moon test --target wasm-gc
moon run cmd/main
MoonJoinPlanKit
面向 MoonBit 的轻量级 Join 顺序规划与代价估算基础库。
MoonJoinPlanKit 解决的是查询系统里一个很具体、但很有工程价值的问题:当多个表或数据集合需要关联时,应该先关联哪两个,怎样减少中间结果,怎样把代价估算过程解释清楚。它不做 SQL 解析,也不做数据执行,而是为 MoonBit 生态里的查询工具、CSV/日志分析器、教学数据库、可视化解释器提供可复用的优化器核心。
适用场景
核心能力
RelationStatsPredicateStatsCatalogCostModelplan_left_deepplan_greedyJoinPlan::explainJoinPlan::to_json最小示例
运行
与已有项目的区别
MoonJoinPlanKit 不是 ORM、不是 DataFrame、不是数据库执行器。它专注于“Join 顺序规划、基数估算、代价解释”这一层,让上层系统可以复用规划能力,而不是每个项目都重新写一套临时代价判断。
项目边界
当前不负责 SQL 解析、索引管理、真实 Join 执行、存储访问和事务控制。后续可以扩展 bushy plan、动态规划枚举、多目标代价模型和计划可视化导出。