クエリヒント
クエリヒントは、クエリオプティマイザに対してクエリの実行方法を明示的に指示するための指示またはコメントです。現在、StarRocks は3種類のヒントをサポートしています: システム変数ヒント (SET_VAR)、ユーザー定義変数ヒント (SET_USER_VARIABLE)、および Join ヒントです。ヒントは単一のクエリ内でのみ効果を発揮します。
システム変数ヒント
SET_VAR ヒントを使用して、SELECT および SUBMIT TASK 文で1つ以上のシステム変数を設定し、その後に文を実行できます。また、CREATE MATERIALIZED VIEW AS SELECT や CREATE VIEW AS SELECT などの他の文に含まれる SELECT 句でも SET_VAR ヒントを使用できます。ただし、CTE の SELECT 句で SET_VAR ヒントを使用した場合、文が正常に実行されても SET_VAR ヒントは効果を発揮しません。
システム変数の一般的な使用法と比較して、SET_VAR ヒントはステートメントレベルで効果を発揮し、セッション全体には影響を与えません。
構文
[...] SELECT /*+ SET_VAR(key=value [, key = value]) */ ...
SUBMIT [/*+ SET_VAR(key=value [, key = value]) */] TASK ...
例
集計クエリの集計モードを指定するには、SET_VAR ヒントを使用して、集計クエリ内のシステム変数 streaming_preaggregation_mode と new_planner_agg_stage を設定します。
SELECT /*+ SET_VAR (streaming_preaggregation_mode = 'force_streaming',new_planner_agg_stage = '2') */ SUM(sales_amount) AS total_sales_amount FROM sales_orders;
SUBMIT TASK 文の実行タイムアウトを指定するには、SET_VAR ヒントを使用して、SUBMIT TASK 文内のシステム変数 insert_timeout を設定します。
SUBMIT /*+ SET_VAR(insert_timeout=3) */ TASK AS CREATE TABLE temp AS SELECT count(*) AS cnt FROM tbl1;
マ テリアライズドビューを作成する際のサブクエリ実行タイムアウトを指定するには、SET_VAR ヒントを使用して、SELECT 句内のシステム変数 query_timeout を設定します。
CREATE MATERIALIZED VIEW mv
PARTITION BY dt
DISTRIBUTED BY HASH(`key`)
BUCKETS 10
REFRESH ASYNC
AS SELECT /*+ SET_VAR(query_timeout=500) */ * from dual;
ユーザー定義変数ヒント
SET_USER_VARIABLE ヒントを使用して、SELECT 文または INSERT 文で1つ以上のユーザー定義変数を設定できます。他の文に SELECT 句が含まれている場合、その SELECT 句でも SET_USER_VARIABLE ヒントを使用できます。他の文は SELECT 文および INSERT 文であることができますが、CREATE MATERIALIZED VIEW AS SELECT 文および CREATE VIEW AS SELECT 文では使用できません。CTE の SELECT 句で SET_USER_VARIABLE ヒントを使用した場合、文が正常に実行されても SET_USER_VARIABLE ヒントは効果を発揮しません。v3.2.4 以降、StarRocks はユーザー定義変数ヒントをサポートしています。