云数据库 GaussDB-其他优化器选项:rewrite_rule

时间:2023-11-01 16:22:49

rewrite_rule

参数说明:标识开启的可选查询重写规则。有部分查询重写规则是可选的,开启它们并不能总是对查询效率有提升效果。在特定的客户场景中,通过此GUC参数对查询重写规则进行设置,使得查询效率最优。

此参数可以控制查询重写规则的组合,比如有多个重写规则:rule1、rule2、rule3、rule4。可以设置:

set rewrite_rule=rule1;          --启用查询重写规则rule1set rewrite_rule=rule2,rule3;    --启用查询重写规则rule2和rule3set rewrite_rule=none;           --关闭所有可选查询重写规则

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:字符串

  • none:不使用任何可选查询重写规则。
  • lazyagg:使用Lazy Agg查询重写规则(消除子查询中的聚集运算)。
  • magicset:使用Magic Set查询重写规则(从主查询中下推条件到子查询)。
  • partialpush:使用Partial Push查询重写规则(对于不可下推的语句,下推部分子查询到DN执行,剩余不下推的部分在CN执行)。
  • uniquecheck:使用Unique Check查询重写规则(提升目标列中无agg的子查询语句,在执行时检查返回行数是否为1行)。
  • disablerep:使用Disable Replicate查询重写规则(由于复制表提升之后可能劣化,开启此规则之后,禁止复制表的子查询提升)。
  • intargetlist:使用In Target List查询重写规则(提升目标列中的子查询)。
  • predpushnormal:使用Predicate Push查询重写规则(下推谓词条件到子查询中,可能会添加BROADCAST算子来支持分布式执行)。
  • predpushforce:使用Predicate Push查询重写规则(下推谓词条件到子查询中,尽可能的利用索引加速)。
  • predpush:在predpushnormal和predpushforce中根据代价选择最优计划。
  • disable_pullup_expr_sublink:禁止优化器将expr_sublink类型的子连接提升,关于sublink的分类和提升原理详见子查询调优

默认值:magicset

support.huaweicloud.com/distributed-devg-v2-opengauss/gaussdb-v5r2c10-1460.html