1.RANGE分區:app
CREATE TABLE apps(
id int PRIMARY KEY AUTO_INCREMENT,
trackName varchar(30) NOT NULL,
seoName varchar(30) NOT NULL,
des varchar(100) NOT NULL
)engine=innodb default charset=utf8
PARTITION BY RANGE(id)(
PARTITION p0 VALUES LESS THAN(3),
PARTITION p1 VALUES LESS THAN(6),
PARTITION p2 VALUES LESS THAN(9),
PARTITION p3 VALUES LESS THAN(12)
);seo
2.LIST分區hash
CREATE TABLE apps(
id int PRIMARY KEY AUTO_INCREMENT,
trackName varchar(30) NOT NULL,
seoName varchar(30) NOT NULL,
des varchar(100) NOT NULL
)engine=innodb default charset=utf8
PARTITION BY RANGE(id)(
PARTITION p0 VALUES LESS THAN(3),
PARTITION p1 VALUES LESS THAN(6),
PARTITION p2 VALUES LESS THAN(9),
PARTITION p3 VALUES LESS THAN(12)
);it
3.HASH分區io
CREATE TABLE apps(
id int PRIMARY KEY AUTO_INCREMENT,
trackName varchar(30) NOT NULL,
seoName varchar(30) NOT NULL,
buyDate DATE NOT NULL,
des varchar(100) NOT NULL
)engine=innodb AUTO_INCREMENT=1 default charset=utf8
PARTITION BY HASH(YEAR(buyDate))
PARTITIONS 10;innodb
hash分區會報錯「1503:A PRIMARY KEY must include all columns in the table's partitioning function」,意思是分區字段必須包含在主鍵字段內;table
解決方案:建立表的時候先不指定主鍵,建立表以後再把分區字段和id指定成複合主鍵:function
1.建立沒有主鍵的表:db
CREATE TABLE apps(
id int NOT NULL ,
trackName varchar(30) NOT NULL,
seoName varchar(30) NOT NULL,
buyDate DATE NOT NULL,
des varchar(100) NOT NULL
)engine=innodb AUTO_INCREMENT=1 default charset=utf8
PARTITION BY HASH(YEAR(buyDate))
PARTITIONS 10;tab
2.添加上符合主鍵:
alert table apps add PAIMARY KEY(id,buyDate);