CREATE TABLE sales ( id INT NOT NULL, region CHAR(30) NOT NULL, country CHAR(30) NOT NULL, item_type CHAR(30) NOT NULL, sales_channel CHAR(30) NOT NULL, order_date DATE NOT NULL, order_id INT NOT NULL, units_sold INT NOT NULL, unit_price FLOAT NOT NULL, revenue FLOAT NOT NULL ) PARTITION BY RANGE(YEAR(order_date)) ( PARTITION p0 VALUES LESS THAN (2015), PARTITION p1 VALUES LESS THAN (2016), PARTITION p2 VALUES LESS THAN (2017), PARTITION p3 VALUES LESS THAN (2018), PARTITION p4 VALUES LESS THAN (2019), PARTITION p5 VALUES LESS THAN (MAXVALUE) );
以上代码创建了一个sales表,按照order_date字段的年份范围进行分区。每一个分区对应一年的数据。数据位于p0到p5六个分区中,其中p5分区可以存储所有超过2019年的数据。
大家也可以按照其他字段进行分区。例如:
CREATE TABLE sales ( id INT NOT NULL, region CHAR(30) NOT NULL, country CHAR(30) NOT NULL, item_type CHAR(30) NOT NULL, sales_channel CHAR(30) NOT NULL, order_date DATE NOT NULL, order_id INT NOT NULL, units_sold INT NOT NULL, unit_price FLOAT NOT NULL, revenue FLOAT NOT NULL ) PARTITION BY HASH(MONTH(order_date)) PARTITIONS 12;
以上代码创建了一个按照order_date字段的月份进行分区的表。使用HASH函数将月份散列,并将数据放入12个分区中。
通过建立分区表,大家可以更好地管理数据,并且在查询数据时可以提高读取效率。