一.背景说明
postgres的查询计划事基于成本的,成本是一个相对值,用来定性代价。本文结合代码学习基于索引扫描的成本计算。
索引包括BTree、GiST、GIN、BRIN。
二.概念及算法
1.总体概念
序号 | 名称 | 说明 |
---|---|---|
1 | 启动成本 | 读取第一条元组前花费的成本 |
2 | 运行成本 | 获取全部元组的成本,包括cpu和disk成本 |
3 | 总成本 | 启动成本和运行成本的和 |
2.具体要素
序号 | 名称 | 说明 |
---|---|---|
1 | indexStartupCost | 索引启动成本,读取第一条元组的成本 |
2 | indexTotalCost | 索引扫描总成本 |
3 | indexSelectivity | 选择率0到1,where子句在搜索范围的比率 |
4 | indexCorrelation | 索引顺序和表顺序之间的相关性(范围在 -1.0 到 1.0 之间)。这个数值用于调整从父表中抓取行的开销估计 |
5 | index_pages | 索引所占页面数 |
6 | cpu_operator_cost |