最近在学习 OceanBase 的分区表,发现一个问题不是特别理解。
假设有一张 Range 分区表:
CREATE TABLE orders (
id BIGINT NOT NULL,
user_id BIGINT,
create_time DATETIME,
amount DECIMAL(10,2),
PRIMARY KEY (id, create_time)
)
PARTITION BY RANGE COLUMNS(create_time) (
PARTITION p202601 VALUES LESS THAN ('2026-02-01'),
PARTITION p202602 VALUES LESS THAN ('2026-03-01'),
PARTITION p202603 VALUES LESS THAN ('2026-04-01'),
PARTITION pmax VALUES LESS THAN (MAXVALUE)
);
如果执行:
SELECT *
FROM orders
WHERE create_time >= '2026-03-01'
AND create_time < '2026-04-01';
理论上应该可以通过分区裁剪,只访问 p202603。
但是如果 SQL 改成:
SELECT *
FROM orders
WHERE DATE(create_time) = '2026-03-15';
这种情况下 OceanBase 还能正常进行分区裁剪吗?
