sr_plan
- 创建extension, 他会创建保留执行计划的表
- 创建表并插入数据
- 开启sr_plan.write_mode, 允许sr_plan收集SQL和执行计划
- 查看QUERY 1的执行计划
PostgreSQL支持merge join、GroupAggregate(通过INDEX SCAN),所以这个CASE,非常快,并不需要b对所有数据进行聚合。 - 查看QUERY 2的执行计划
- 执行以下QUERY后,QUERY的执行计划被保存到sr_plans中
- 禁止sr_plan收集SQL与执行计划
- 查看保存的执行计划
explain_jsonb_plan 不适用 - 替换(篡改)执行计划
- 允许QUERY使用sr_plan保存的执行计划
验证QUERY是否已使用sr_plan保存的执行计划
- 只要parser后的QUERY不变,执行计划就不会变化
支持左连接,右连接等常用查询。
pg_query_rewrite()
create extension pg_query_rewrite;
pg_query_rewrite.max_rulespg_query_rewrite.max_rules
select pgqr_add_rule(, );
select pgqr_remove_rule();
select pgqr_truncate();
查看所有规则:select pgqr_rules();
创建一个新的规则,将SQL语句转换为SQL语句:
删除: