ENVIRONMENT 选项

使用 SET OPTIMIZATION 语句的 ENVIRONMENT 选项子句来为当前会话中的所有查询定义通用的优化环境。对于有些数据仓库应用,在每一维度表的主键对应于事实表的外键的数据库中,您在此子句中指定的会话环境设置可提升将事实表与维度表连接的查询的性能。

GBase 8s DB-Access 实用程序支持 SET OPTIMIZATION 语句的 ENVIRONMENT 选项子句。

语法

元素 描述 限制 语法
table 表、视图或同义词 在数据库中必须存在 标识符

用法

ENVIRONMENT 选项子句可指定当前会话的优化环境的属性。保持这些属性直到会话结束为止,或直到另一 SET OPTIMIZATION ENVIRONMENT 语句重置优化属性为止。

下表描述每一星型连接伪指令并指明它如何影响优化器的查询计划。
关键字 作用 优化器行动
STAR_JOIN 'ENABLED'开启(与 'DISABLED' 关闭)对当前会话的星型连接支持。当可能的时候,对于所有查询,'FORCED' 设置偏爱星型执行路径。 对于 'ENABLED',优化器考虑星型连接执行计划的可能性。对于 'FORCED',如果可用的话,会选择星型计划。对于 'DISABLED',不考虑星型连接。
FACT 标识在星型模式中对应于事实表的表。如果 AVOID_FACT 表也列为 FACT,则 FACT 优先。DEFAULT(或空字符串)为会话关闭此环境设置。 仅将在 FACT 列表中的表考虑作为星型连接优化中的事实表。可罗列多个表作为 FACT。
AVOID_FACT 请不要使用该表(或在表的列表中的任何表)作为星型连接优化中的事实表。DEFAULT(或空字符串)为会话关闭此环境设置。 将 AVOID_FACT 列表中的表考虑作为星型连接优化中的事实表。可罗列多个表作为 AVOID_FACT。
NON_DIM 标识在星型模式中不对应于维度表的表。DEFAULT(或空字符串)为会话关闭此环境设置。 将在 NON_DIM 列表中的表不考虑作为星型连接优化中的维度表。可罗列多个表作为 NON_DIM。

跟在 STAR_JOIN 伪指令之后的任何 'ENABLED''DISABLED''FORCED' 关键字,或以逗号分隔的一个或多个指定优化器环境属性的设置的 table 标识符,必须通过单引号(')或双引号(")定界。如果以逗号分隔的多个 table 标识符的列表跟在 FACTAVOID_FACTNON_DIM 关键字之后,则请不要在列表中的任何项之间包括空格。

当用户连接到数据库时,DBA 可使用 sysdbopen( ) 例程来定义生效的优化环境。例如,要指定总是偏爱星型连接执行计划的优化器环境,sysdbopen( ) 例程应包括这些 SQL 语句:
SET OPTIMIZATION ENVIRONMENT STAR_JOIN 'FORCED'; 
                    SET OPTIMIZATION ENVIRONMENT FACT 'table1,table2, ... tableN';

在此,其名称罗列在 FACT 关键字之后的表都应是事实表。

要获取更多关于可偏爱或避免星型连接执行计划的查询优化器伪指令的信息,请参阅 星型连接伪指令

要获取更多关于如何使用内建的 sysdbopen( ) 例程来为指定的用户、为 PUBLIC 组或为角色,在连接时刻定义会话环境的信息,请参阅 会话配置过程