MySQL
MySQL
EXPLAIN SELECT * FROM logs
WHERE dt >= '2024-01-01' AND dt < '2024-02-01';
-- partitions 列显示仅命中 2024 年 1 月分区
-- 注意:对分区键使用函数可能无法裁剪
EXPLAIN SELECT * FROM logs WHERE YEAR(dt) = 2024;PostgreSQL
PostgreSQL
EXPLAIN SELECT * FROM logs
WHERE dt >= DATE '2024-01-01' AND dt < DATE '2024-02-01';
-- Append 节点下只列出存活分区(enable_partition_pruning 默认开启)| 裁剪条件 | 分区键上的常量或可推导条件;无法裁剪时会扫描全部分区 |
|---|---|
| 函数阻止 | 对分区键做函数运算通常无法裁剪,改写为范围条件 |
| 收益 | 扫描量随裁剪下降,也便于按分区归档与维护 |