云数据库 GAUSSDB-优化器方法配置:gsi_fastpath_level

时间:2024-11-13 14:45:21

gsi_fastpath_level

参数说明控制优化器是否执行全局二级索引简单查询的规则判断系统,全局二级索引的简单查询规则如下:
  • 单个表、没有子查询、没有子链接、目标表不是视图。
  • 查询语句无法生成普通索引的执行计划。
  • 查询语句无法生成GSI的IndexOnlyScan执行计划。
  • 查询语句不包含Scan类的Hint,如TableScan、IndexScan等。
  • WHERE条件中包含等值条件且等值条件包含候选GSI(唯一且不是部分GSI索引)的索引键。

参数类型:枚举类型

参数单位:

取值范围

  • strict:等值条件包含GSI所有索引键。
  • partial:等值条件包含GSI的部分索引键(最左匹配),性能不一定最优。
  • none:关闭。

默认值strict

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

设置建议:推荐使用默认值。

设置不当的风险与影响:设置不当可能影响部分GSI场景下的计划生成,影响查询性能。

  • partial的使用参考如下场景:
    gaussdb=# CREATE TABLE t1(a INT, b INT, c INT);
    gaussdb=# CREATE GLOBAL UNIQUE INDEX t1_gsi ON t1(b,c);
    -- Q1
    gaussdb=# SELECT * FROM t1 WHERE b=1;
    -- Q2
    gaussdb=# SELECT * FROM t1 WHERE b=1 LIMIT 1;

    上述场景中,GSI索引建在(b,c)两列上,gsi_fastpath_level参数设置为partial时,查询语句Q1和Q2才可以生成GSI非Stream回表计划。索引唯一性由(b,c)两列保证,对于查询语句Q1,返回结果可能有多条,GSI非Stream回表计划的性能不一定是最优的,对于查询语句Q2,由于包含limit 1的条件,GSI非Stream回表计划的性能依然是最优的。

support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0280.html