概述部分索引只覆盖满足条件的行,提升热点查询效率;扩展统计捕获列间相关性,提高选择度估算准确性,协同改善查询计划与执行性能。关键实践与参数条件覆盖: 针对高选择度状态或时间窗口建立部分索引统计类型: `dependencies` `mcv` 提升估算维护: 定期 `ANALYZE` 保持统计新鲜观察: 使用 `EXPLAIN (ANALYZE, BUFFERS)`示例/配置/实现CREATE INDEX idx_orders_paid_recent ON orders (customer_id, created_at DESC) WHERE status = 'PAID' AND created_at >= now() - interval '30 days'; CREATE STATISTICS st_orders (dependencies) ON customer_id, status FROM orders; ANALYZE orders; EXPLAIN (ANALYZE, BUFFERS) SELECT id, created_at FROM orders WHERE status = 'PAID' AND created_at >= now() - interval '7 days' AND customer_id = 123 ORDER BY created_at DESC LIMIT 50; 验证命中与裁剪: 查询命中部分索引且扫描行数显著减少估算准确: 启用扩展统计后计划节点行数更贴近实际排序优化: 覆盖索引内完成排序,降低内存开销稳定性: 在不同数据分布阶段重复测试保持一致注意事项部分索引需与查询条件一致,否则收益有限索引数量需控制,避免写入放大统计需及时维护,批量写入后执行 `ANALYZE`与分区策略协同设计

发表评论 取消回复