基础查询调优
查询分区表时,一定要带上分区字段,Explain + SQL 可以协助用户分析查询了几个分区和 tablet 的数据。
查询 SQL 条件最好能命中分区 Key 和分桶 Key。
查询 SQL 条件最好能命中前缀索引。
由于 Doris 是列存数据库,当查询的字段足够多的时候,可能性能还不如行式存储,建议查询时尽可能选择具体的字段代替 *,在查询的最后方加上 limit number 的限制。
执行 Select 操作的时候尽可能避免写成 function(column)= "xxxx"的形式,这样将导致无法发挥 Doris 系统谓词下推的优势,左侧应为列名,右侧应该为可以计算展平的常数值。
查询尽可能避免使用 or,union all 的情况,在大多数场景下,考虑使用 in 代替 or。
普通数据探查的 SQL,如果不需要全部数据,建议加上 limit 返回条数限制,也可加速查询。
Join 优化
Shuffle 方式优化:效率为 Colocate join > Bucket Shuffle > Shuffle > BroadCast,具体参见 Bucket Shuffle Join。 RuntimeFilter:join 查询中,存在除了关联条件之外,右边有其他过滤条件。
使用 Rollup
查询无法覆盖基表前缀索引,通过 Rollup 调整 Key 顺序形成前缀索引。
对 Aggregate 表进行 Key 筛选聚合
使用物化视图
如果经常对某表进行模式固定的聚合查询,建议在此表创建物化视图;
Rollup 支持的场景都能用;
对 Duplicate 表形成额外聚合。
索引优化
Bitmap 索引:取值基数比较小的列[100-100000],查询条件命中列。
BloomFliter 索引:如果经常对某列进行精确点查,且列的基数较高,建议在此列创建 Bloom filter 索引。
使用 Cache
PageCache:此配置默认开启。
SqlCache:此配置默认关闭。并发高,查询结果集较小时效果好。
本页内容是否解决了您的问题?