云数据库 GAUSSDB-其它选项:enable_partrouting_optimization
enable_partrouting_optimization
参数说明:控制是否支持分区表插入优化。
该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
取值范围:布尔型
- on表示支持分区表插入优化,针对INSERT SELECT语句,当SELECT包含常量分区键时,INSERT只需要做一次分区路由,提升性能。
- off表示不支持分区表插入优化,插入每一条数据前都需要做一次分区路由去确定插入哪一张分区表。
默认值:on
- 只支持INSERT SELECT语句。
- INSERT INTO ta SELECT FROM tb中,插入a表中所有分区键的值,对应SELECT结果集中的列值必须是常量(可以不存在该列,因为默认值也是恒定的)。
(1) INSERT INTO ta SELECT c,d FROM b WHERE tb.c='1'或SELECT '1' AS c, d FROM tb则可以判断结果列tb.c为常量。
(2) INSERT INTO ta SELECT c,d FROM b WHERE tb.c=func('1'); 如果func()不是volatile函数,也不是包含非常量参数的stable/immutable函数,则可以判断tb.c为常量。
(3) 如果列值为聚合函数的返回值,如:INSERT INTO ta SELECT count(c),d FROM b WHERE tb.c='1' GROUP BY c, d; 不能判断count(c)为常量。
- 不支持UPSERT子句。
- 不支持包含BEFORE和INSTEAD触发器的表,因为可能改变要插入的数据。