本篇内容介绍了“PostgreSQL中set_base_rel_sizes函数及其子函数案例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!make_one_rel源代码:RelOptInfomake_one_rel函数调用了set_base_rel_sizes,该函数的主要实现逻辑通过调用set_rel_size实现.现重点考察函数set_rel_size中对基础关系进行估算的处理逻辑,即函数set_plain_rel_size的实现逻辑.
set_plain_rel_sizeset_plain_rel_size->check_index_predicates
如果部分(条件)索引的谓词与查询语句相匹配,则predOK设置为true
比如:
数据表t1(c1 int,c2 varchar(40),…),如存在索引idx_t1_partial_c1,条件为where c1 > 100
查询条件为where c1 > 100(是否支持>200?),那么该谓词与查询条件相匹配set_plain_rel_size->set_baserel_size_estimates
函数注释:源代码:测试脚本:
单位信息表,插入100,000行数据,dwbh为主键,同时创建函数索引和部分索引个人信息表,插入5,000,000行数据,在grbh和dwbh上创建索引个人缴费信息表,在grbh上创建索引,多次插入5,000,000行数据执行简单的查询SQL:执行计划如下:启动gdb跟踪分析:进入函数clauselist_selectivity:开始循环处理:第一个条件语句,调用clause_selectivity后,选择率为0.44…添加到范围条免费主机域名件语句中:第二个条件语句,调用clause_selectivity后,选择率为0.66…,,同样会添加到范围条件语句中:第三个条件语句,调用clause_selectivity后,选择率为0.61…,,同样会添加到范围条件语句中:结束循环,开始处理范围条件语句:回到主函数:结果为5482,免费主机域名执行计划中的rows=5482就是这么来的.“PostgreSQL中set_base_rel_sizes函数及其子函数案例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注云技术网站,小编将为大家输出更多高质量的实用文章!
相关推荐: 怎么使用PostgreSQL的INDEX_CLEANUP
这篇文章主要讲解了“怎么使用Postgr免费主机域名eSQL的INDEX_CLEANUP”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PostgreSQL的INDEX_CLEANUP”吧!VACUUM命…