您当前的位置:首页 >> 设计观点

openGauss 内核分析 - 粗略估计信息与行数估计

2025-05-18 12:18:21

电子邮件的推算,推算基列于 baserel、Join 中会间结果集 joinrel、Aggregation 中会结果集体积,为无疑推算想到正要。

SQL 核对往往带有 where 约束(填充必要条件),比如 SELECT * FROM tt WHERE string4 = 'AAAAxx'。其实了约束必要条件的并不能够率,也就是其实了通过扫描同方向要扫描单单来的结果所%的比例或者通过连通操作所获的二进位所%的比例,通过这个比例就可以推定中会间结果和再度结果的多达量,进而用到这些多达量来算单单无疑。

这里重点分析基列于的非常简单核对 —— 基于 OpExpr 种类的并不能够率算单单,处理参多达在 clause_selectivity。如果是填充必要条件就命令行 restriction_selectivity 参多达来获 OpExpr 列于达式的并不能够率,如果是连通必要条件则命令行 join_selectivity 参多达来获并不能够率。

SELECT * FROM tt WHERE string4 = 'AAAAxx' 为填充必要条件,命令行 restriction_selectivity 开展并不能够率推算。

restriction_selectivity 参多达识别单单 string4 = 'AAAAxx' 是形如 Var = Const 的等参多达约束,常量的约束并不能够性算单单参多达存储器在控制系统列于 PG_OPERATOR,opno = 93 互换的并不能够率算单单参多达为 eqsel,通过 eqsel 参多达命令行 var_eq_const 参多达开展并不能够率推算。在该处理过程中会,var_eq_const 参多达就会读取 PG_STATISTIC 列于中会 string4 罗列产于电子邮件,并依靠 MCV 电子邮件这样一来赶回并不能够率为 0.25。

参多达 set_baserel_size_estimates 算单单至少至多。

参多达命令行关系:standard_planner-> subquery_planner-> grouping_planner-> query_planner-> make_one_rel-> set_base_rel_sizes-> set_rel_size-> set_plain_rel_size-> set_baserel_size_estimates-> clauselist_selectivity-> clause_selectivity-> restriction_selectivity-> OidFunctionCall4Coll-> eqsel->var_eq_const

肾癌手术费用大概多少
如何预防肺癌
拉肚子怎么缓解
有什么方法可以解毒辟秽
绝经会怀孕吗
治胃病
克癀胶囊功能主治
眼睛干涩的原因和解决方法
999ask健康资讯
克癀胶囊的成分解析
友情链接