SuperAPI AI 工具集

clickhouse-query-optimization

测试与质量

查看项目

更新于 10-16 02:35

技能介绍

该技能用于在编写、调试或优化 ClickHouse 查询时加载,目标包括:查询执行提速 10-100 倍、内存占用降低 90% 以上、消除全表扫描(读取数据低于 1%)、让 JOIN 从分钟级缩短到毫秒级。参考文档涵盖查询优化、PREWHERE、JOIN、字典(Dictionaries)、查询设置。

关键规则: [CIRTICAL] 必须按 ORDER BY 前缀列过滤,跳过前缀会全表扫描;避免 SELECT *,只选所需列;优化前用 EXPLAIN indexes=1 验证索引使用与行数估算。 [HIGH] 对高选择性过滤使用 PREWHERE;在小于 1000 万行的表上做键值查找时优先用字典而非 JOIN;仅需存在性判断时用 IN 子查询代替 JOIN。 [MEDIUM] 尽量限制 JOIN 数量,每个 JOIN 会指数级增加复杂度。

主要能力:讲解 ORDER BY 与稀疏主索引如何按 granule(默认 8192 行)跳过数据;为不在 ORDER BY 中的列添加跳数索引(如 bloom_filter、minmax、set(N));区分 PREWHERE 与 WHERE 的读取时机;通过字典替代 JOIN(含 LIFETIME 延迟权衡与 SYSTEM RELOAD DICTIONARY);用 EXPLAIN、EXPLAIN indexes=1、EXPLAIN ESTIMATE、EXPLAIN PIPELINE 分析执行计划;从 system.query_log、system.query_thread_log 定位慢查询与全表扫描;使用查询缓存(22.8+)与 use_query_cache 设置;ALTER TABLE UPDATE 更新数据及其 mutation 限制。

限制:字典为最终一致,存在过期窗口,实时性要求高时应改用 JOIN;UPDATE 无法修改 ORDER BY 或 PARTITION BY 中的列,且以异步 mutation 执行;应用模式变更(加索引、建物化视图、改表)前需先征求用户确认。

分类依据其明确用于数据库查询编写、调试与性能优化的用途,归入数据分析。