查询提示
查询提示是指示或注释,用于明确建议查询优化器如何执行查询。目前,StarRocks 支持三种类型的提示:系统变量提示 (SET_VAR)、用户自定义变量提示 (SET_USER_VARIABLE) 和 Join 提示。提示仅在单个查询中生效。
系统变量提示
您可以在 SELECT 和 SUBMIT TASK 语句中使用 SET_VAR 提示来设置一个或多个系统变量,然后执行这些语句。您还可以在其他语句中包含的 SELECT 子句中使用 SET_VAR 提示,例如 CREATE MATERIALIZED VIEW AS SELECT 和 CREATE VIEW AS SELECT。请注意,如果在 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 语句指定执行超时,可以在 SUBMIT TASK 语句中使用 SET_VAR 提示设置系统变量 insert_timeout。
SUBMIT /*+ SET_VAR(insert_timeout=3) */ TASK AS CREATE TABLE temp AS SELECT count(*) AS cnt FROM tbl1;
要为创建物化视图指定子查询执行超时,可以在 SELECT 子句中使用 SET_VAR 提示设置系统变量 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;