join-order 标签归档

共 3 篇文章 · 返回首页

【SQLite 内核】查询计划器与统计:没有 ANALYZE 时的启发式与代价估计边界

钉住 EXPLAIN QUERY PLAN 的 SEARCH/SCAN 判定、ANALYZE 写入 sqlite_stat1/stat4 的具体语义,以及没有统计时 SQLite 用什么默认猜测(表大小猜一百万行、重复度猜 10);对照官方 N3 join 排序算法与 PG 式穷举代价优化器的复杂度边界,本机 3.53.2 实测覆盖两条 EQP 路径。

【PG 内核】查询规划器 — Join 顺序与路径生成:优化器如何选中 Nested Loop

拆解 PostgreSQL 查询优化器的路径生成:make_one_rel() 从基表访问到 Join 路径的完整流程、四种扫描路径 (SeqScan/IndexScan/IndexOnlyScan/BitmapScan) 的创建条件、三种 Join 方式 (NestLoop/HashJoin/MergeJoin) 的代价比较与选择逻辑、动态规划到 GEQO 遗传算法的切换条件 (geqo_threshold)、并行路径的生成机制。配 EXPLAIN (ANALYZE, BUFFERS) 输出与 planner 内部决策的逐项对照实验。