示例
示例
CREATE INDEX idx_orders_pending_created
ON orders (created_at)
WHERE status = 'pending';
-- 命中:查询条件包含 status = 'pending'
SELECT * FROM orders
WHERE status = 'pending' AND created_at > now() - interval '1 day';
-- 不命中:查询没有 status = 'pending' 条件
SELECT * FROM orders WHERE created_at > now() - interval '1 day';| 原理 | 索引只覆盖满足谓词的行,体积小、维护成本低 |
|---|---|
| 命中前提 | 查询谓词能被优化器论证蕴含索引谓词(简单等值与范围通常可以) |
| 典型场景 | 未完成、未删除、指定类型的数据子集 |