用途:面向数据库报表查询的性能优化,因报表查询常扫描大数据集,低效查询会拖慢整个系统。
主要能力:提供决策树选择手段——需要查询优化用 EXPLAIN ANALYZE,需要缓存聚合用物化视图,需要复杂拆分用 CTE,需要行排名用窗口函数,需要部分覆盖用部分索引。
查询优化:避免 SELECT *,只取所需字段;编写 SARGable 谓词以走索引查找而非扫描,例如用 WHERE created_at >= '2023-01-01' AND created_at < '2024-01-01' 代替对列使用函数。复杂逻辑用 CTE(WITH),极复杂多步处理可用 CREATE TEMP TABLE;避免 SELECT 列表中逐行运行的关联子查询,改写为 JOIN 或 LATERAL。
聚合策略:仪表盘上的重聚合结果用物化视图缓存,例如 CREATE MATERIALIZED VIEW mv_daily_sales AS SELECT day, SUM(total) FROM sales GROUP BY day; 并用 REFRESH MATERIALIZED VIEW CONCURRENTLY mv_daily_sales; 显式刷新;行内排名等逻辑使用 ROW_NUMBER()、RANK()、LEAD()、LAG() 等窗口函数替代自连接。
安全护栏:为报表角色设置 statement_timeout,防止失控查询长期占用资源;核对估算基数,可能返回百万行以上时强制 LIMIT 或分页。
查询分析:上线前用 EXPLAIN ANALYZE 查看执行计划,留意大表 Seq Scan、估算与实际行数差异、可改哈希连接的高行数嵌套循环。部分索引示例:CREATE INDEX idx_user_active ON USER(email) WHERE is_active = TRUE; 适用于低频值常被查询的低基数列。
限制:资料未提供具体数据库版本要求、性能基准、收费与平台信息。