MST

星途 面试题库

面试题:MySQL 中如何创建一个基于范围分区的分区表

假设我们有一个存储订单信息的表 `orders`,包含订单编号 `order_id`(自增主键)、下单时间 `order_time`(日期类型)和订单金额 `order_amount`(小数类型)。现在要求根据 `order_time` 进行范围分区,每个分区存储一个月的数据,请写出创建该分区表的 SQL 语句。
31.4万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
CREATE TABLE orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    order_time DATE,
    order_amount DECIMAL(10, 2)
)
PARTITION BY RANGE (YEAR(order_time) * 100 + MONTH(order_time)) (
    PARTITION p0 VALUES LESS THAN (202301),
    PARTITION p1 VALUES LESS THAN (202302),
    PARTITION p2 VALUES LESS THAN (202303),
    -- 以此类推,根据实际需求添加更多分区
    PARTITION p11 VALUES LESS THAN (202401)
);

请注意,上述示例中以2023年为例进行分区,如果实际需求的时间范围不同,需相应调整 VALUES LESS THAN 中的值。