数据仓库服务 GAUSSDB(DWS)-开发人员选项:rewrite_rule

时间:2024-09-03 14:23:41

rewrite_rule

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

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

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

参数类型:USERSET

取值范围:字符串

  • none:不使用任何可选查询重写规则
  • lazyagg:使用Lazy Agg查询重写规则(消除子查询中的聚集运算)
  • magicset:使用Magic Set查询重写规则(从主查询中下推条件到提升的子链接)
  • uniquecheck:使用Unique Check重写规则(允许目标列不含聚集函数的表达式子链接场景提升,需在子链接按关联列聚集后目标列值唯一才能开启,建议专业调优人员使用)。
  • disablerep:使用禁止复制表的子链接提升规则(针对复制表禁止子链接提升)。
  • projection_pushdown:使用Projection Pushdown重写规则(子查询中消除父查询不使用的列)。
  • or_conversion:使用OR转换重写规则(消除执行效率低下的关联OR条件)。
  • plain_lazyagg:使用Plain Lazy Agg查询重写规则(消除单子查询中的聚集操作)。该选项仅8.1.3.100及以上集群版本支持。
  • eager_magicset:使用eager_magicset查询重写规则(从主查询中下推条件到子查询)。该选项仅8.2.0及以上集群版本支持。
  • casewhen_simplification:使用casewhen语句改写的重写规则,开启后对(case when xxx then const1 else const2)=const1场景进行改写。该选项仅8.3.0及以上集群版本支持。
  • outer_join_quality_imply:支持外连接中外表的表达式过滤条件(非等值,等值过滤条件已经支持)通过等值关联条件传递并下推到内表,减少内表扫描返回数据量。该选项仅8.3.0及以上集群版本支持。
  • inlist_merge:使用inlist_or_inlist查询重写规则,支持基表相同列的or语句合并,开启后对(where a in (list1) or a in (list2))进行合并改写,合并后可支持inlist2join。该选项仅8.3.0及以上集群版本支持。

默认值:magicset, or_conversion, projection_pushdown, plain_lazyagg

support.huaweicloud.com/devg-830-dws/dws_04_0936.html