物化视图
聚合例子
建表
create table sales_records(
record_id int,
seller_id int,
store_id int,
sale_date date,
sale_amt bigint
)
distributed by hash(record_id)
properties("replication_num" = "1");
插入数据
insert into sales_records values(1,2,3,'2020-02-02',10);
创建物化视图
CREATE materialized VIEW store_amt AS SELECT
store_id,
sum( sale_amt )
FROM
sales_records
GROUP BY
store_id;
查看表的物化视图
desc sales_records all;
查看库的所有物化视图
SHOW ALTER TABLE MATERIALIZED VIEW FROM test_db;
查看物化视图是否生效
EXPLAIN SELECT store_id, sum(sale_amt) FROM sales_records GROUP BY
store_id;
删除物化视图
DROP MATERIALIZED VIEW store_amt on sales_records;
再次查看执行计划,可以看到查询的是原表。
前缀索引例子
查看执行计划
explain select record_id,seller_id,store_id from sales_records
where store_id=3;
创建物化视图(这里就是调整了字段的顺序)
CREATE materialized VIEW mv_1 AS SELECT
store_id,
record_id,
seller_id,
sale_date,
sale_amt
FROM
sales_records;
可以看到,走了物化视图
查询优化设置
内存设置
一个查询任务,在单个
BE
节点上默认使用不超过
2GB
内存,内存不够时
,
查询可能
会出现‘
Memory limit exceeded
’。
SHOW VARIABLES LIKE "%mem_limit%";
临时设置
SET exec_mem_limit = 8589934592;
全局设置(永久设置)
SET GLOBAL exec_mem_limit = 8589934592;
超时时间设置
doris
默认最长查询时间为
300s,
如果仍然未完成
,
会被
cancel
掉,查看配置:
SHOW VARIABLES LIKE "%query_timeout%";
set global query_timeout = 60;