advanced
复杂SQL查询性能深度优化
针对特定的慢查询场景进行深入分析并提出多种优化方案。
📝 提示内容
我们有一个PostgreSQL数据库,包含一张亿级行数的大表 'orders' (包含id, user_id, amount, created_at, status等字段) 和一张关联表 'users'。现有SQL查询如下:'SELECT u.name, COUNT(o.id), SUM(o.amount) FROM users u JOIN orders o ON u.id = o.user_id WHERE o.status = 'completed' AND o.created_at > '2023-01-01' GROUP BY u.name HAVING SUM(o.amount) > 10000 ORDER BY SUM(o.amount) DESC LIMIT 100;'。该查询执行耗时超过5秒。请作为数据库专家(DBA):1. 分析默认执行计划中的瓶颈(如Seq Scan, Hash Join等)。2. 提出至少三种优化方案(包括但不限于索引调整、查询重写、物化视图或分区表)。3. 解释每种方案的优缺点及适用场景。4. 写出优化后的SQL语句并预测其执行成本变化。