分区: MySQL 分区是将一个表或索引分解成多个更小、更可管理的部分。这些部分称为分区。每个分区都是独立的对象,可以独自处理,这可以提高某些类型查询的性能。
主键: 主键是数据库表中一列或多列的组合,它们唯一地标识表中的每一行。主键必须满足以下条件:
问题1:为什么分区表查询性能没有提升?
原因:
解决方法:
问题2:为什么主键不能包含 NULL 值?
原因: 主键的定义要求其值必须唯一且非空。如果允许 NULL 值,可能会导致主键的唯一性约束失效。
解决方法:
确保主键列不允许 NULL 值。可以在创建表时显式设置 NOT NULL
约束。
-- 创建一个分区表
CREATE TABLE sales (
id INT AUTO_INCREMENT,
sale_date DATE,
amount DECIMAL(10, 2),
PRIMARY KEY (id, sale_date)
) PARTITION BY RANGE (YEAR(sale_date)) (
PARTITION p0 VALUES LESS THAN (2010),
PARTITION p1 VALUES LESS THAN (2020),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
-- 插入数据
INSERT INTO sales (sale_date, amount) VALUES ('2015-05-15', 100.00);
INSERT INTO sales (sale_date, amount) VALUES ('2021-01-01', 200.00);
-- 查询分区表
SELECT * FROM sales WHERE sale_date BETWEEN '2010-01-01' AND '2020-12-31';
领取专属 10元无门槛券
手把手带您无忧上云