SQL查询优化器 sql-query-optimizer

SQL查询优化器是一款专注于提升数据仓库查询性能的智能工具。它能够跨Snowflake、BigQuery、Redshift、Databricks等主流数据平台,自动分析SQL语句,识别性能瓶颈和反模式,并提供针对性的优化建议。核心功能包括执行计划解析、索引/聚类键推荐、连接优化、子查询重写、CTE优化等。适用于数据分析师、数据工程师和数据库管理员,旨在降低查询延迟、减少计算成本、提升数据处理效率。关键词:SQL优化、数据仓库、查询性能、Snowflake、BigQuery、Redshift、Databricks、执行计划、索引推荐、反模式检测。

数据仓库 0 次安装 0 次浏览 更新于 2/23/2026

名称: SQL查询优化器 描述: 分析并优化跨不同数据仓库平台(Snowflake、BigQuery、Redshift、Databricks)的SQL查询,提供平台特定的优化建议。 版本: 1.0.0 类别: SQL优化 技能ID: SK-DEA-004 允许工具: Read, Grep, Glob, Bash, WebFetch

SQL查询优化器

分析并优化跨不同数据仓库平台的SQL查询,提供平台特定的优化建议。

概述

此技能检查SQL查询以识别性能瓶颈、提出优化建议,并为Snowflake、BigQuery、Redshift和Databricks提供平台特定的优化方案。它分析查询执行计划,推荐索引/聚类键,并识别反模式。

能力

  • 查询执行计划分析 - 解析和分析EXPLAIN输出
  • 索引推荐 - 建议聚类键、排序键、分区键
  • 连接优化 - 识别低效的连接模式并提出改进建议
  • 子查询消除 - 将相关子查询转换为CTE或连接
  • CTE优化 - 物化与引用优化
  • 窗口函数优化 - 框架和分区优化
  • 谓词下推验证 - 验证过滤器下推的有效性
  • 聚类键推荐 - 平台特定的聚类策略
  • 物化视图建议 - 识别物化视图的候选对象
  • 平台特定优化 - Snowflake、BigQuery、Redshift、Databricks

输入模式

{
  "query": {
    "type": "string",
    "description": "要分析的SQL查询",
    "required": true
  },
  "platform": {
    "type": "string",
    "enum": ["snowflake", "bigquery", "redshift", "databricks", "postgres"],
    "required": true,
    "description": "目标数据仓库平台"
  },
  "tableStatistics": {
    "type": "object",
    "description": "表统计信息,包括行数、列基数",
    "properties": {
      "tables": {
        "type": "array",
        "items": {
          "name": "string",
          "rowCount": "number",
          "sizeGB": "number",
          "columns": "array"
        }
      }
    }
  },
  "executionPlan": {
    "type": "object",
    "description": "查询执行计划(EXPLAIN输出)"
  },
  "queryHistory": {
    "type": "object",
    "description": "历史查询性能指标"
  },
  "optimizationGoals": {
    "type": "array",
    "items": {
      "type": "string",
      "enum": ["latency", "cost", "throughput", "scan_reduction"]
    },
    "default": ["latency", "cost"]
  }
}

输出模式

{
  "optimizedQuery": {
    "type": "string",
    "description": "优化后的SQL查询"
  },
  "improvements": {
    "type": "array",
    "items": {
      "type": {
        "type": "string",
        "enum": ["join", "predicate", "aggregation", "cte", "window", "scan", "index"]
      },
      "description": "string",
      "impact": "high|medium|low",
      "lineNumber": "number",
      "originalCode": "string",
      "optimizedCode": "string"
    }
  },
  "indexRecommendations": {
    "type": "array",
    "items": {
      "table": "string",
      "type": "clustering|sort|partition|index",
      "columns": "array",
      "rationale": "string",
      "ddl": "string"
    }
  },
  "estimatedImprovement": {
    "scanReduction": {
      "type": "number",
      "description": "数据扫描减少百分比"
    },
    "timeReduction": {
      "type": "number",
      "description": "执行时间减少百分比"
    },
    "costReduction": {
      "type": "number",
      "description": "查询成本减少百分比"
    }
  },
  "antiPatterns": {
    "type": "array",
    "items": {
      "pattern": "string",
      "severity": "high|medium|low",
      "location": "string",
      "suggestion": "string"
    }
  },
  "platformSpecificNotes": {
    "type": "array",
    "items": "string"
  }
}

使用示例

基础查询优化

{
  "query": "SELECT * FROM orders o JOIN customers c ON o.customer_id = c.id WHERE o.created_at > '2024-01-01'",
  "platform": "snowflake"
}

带执行计划分析

{
  "query": "SELECT customer_id, SUM(amount) FROM orders GROUP BY customer_id",
  "platform": "bigquery",
  "executionPlan": {
    "stages": [...],
    "totalBytesProcessed": 1073741824
  },
  "optimizationGoals": ["cost", "scan_reduction"]
}

带表统计信息

{
  "query": "SELECT ... 复杂查询 ...",
  "platform": "redshift",
  "tableStatistics": {
    "tables": [
      {
        "name": "orders",
        "rowCount": 10000000,
        "sizeGB": 50,
        "columns": [
          {"name": "order_id", "cardinality": 10000000},
          {"name": "customer_id", "cardinality": 500000}
        ]
      }
    ]
  }
}

平台特定优化

Snowflake

优化项 描述
聚类键 推荐微分区聚类
结果缓存 识别可从缓存中受益的查询
查询加速 建议 QUERY_ACCELERATION_MAX_SCALE_FACTOR
仓库大小调整 推荐合适的仓库规模

BigQuery

优化项 描述
分区 DATE/TIMESTAMP 分区推荐
聚类 最多4个聚类列
BI Engine 识别符合BI Engine条件的查询
槽位 估算槽位使用优化

Redshift

优化项 描述
排序键 COMPOUND 与 INTERLEAVED 推荐
分布 KEY、EVEN、ALL 分布策略
压缩 列编码推荐
清理 VACUUM 和 ANALYZE 推荐

Databricks

优化项 描述
Z排序 多列Z顺序推荐
Delta缓存 缓存策略推荐
Photon 识别符合Photon条件的查询模式
自适应执行 AQE配置建议

常见反模式检测

查询结构

反模式 影响 修复方法
SELECT * 明确指定列
相关子查询 转换为 JOIN 或 CTE
大数据集上的 DISTINCT 使用 GROUP BY 或窗口函数
非SARGable谓词 重写以使用索引

连接问题

反模式 影响 修复方法
笛卡尔积 严重 添加连接条件
隐式连接 使用显式 JOIN 语法
错误的连接顺序 按选择性重新排序
连接键上缺少索引 添加聚类/排序键

聚合问题

反模式 影响 修复方法
GROUP BY 序号 使用列名
过滤前聚合 先过滤,后聚合
过度分组 减少 GROUP BY 列

集成点

MCP服务器集成

  • Snowflake MCP - 实时执行计划分析
  • BigQuery MCP - 成本估算和槽位分析
  • Redshift MCP - 查询执行和统计信息

相关技能

  • 数据质量分析器 (SK-DEA-005) - 表统计信息收集
  • dbt项目分析器 (SK-DEA-003) - 模型查询优化

适用流程

  • 查询优化 (query-optimization.js)
  • 数据仓库设置 (data-warehouse-setup.js)
  • BI仪表板开发 (bi-dashboard.js)
  • OBT创建 (obt-creation.js)

参考资料

版本历史

  • 1.0.0 - 支持多平台的初始版本