You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1.9 KiB

CREATE TABLE test_table
(
id INT NOT NULL,
fname VARCHAR(30),
job_code INT NOT NULL,
store_id INT NOT NULL,
PRIMARY KEY (`id`,`store_id`)
)
PARTITION BY RANGE (store_id)
(
PARTITION p0 VALUES LESS THAN (6),
PARTITION p1 VALUES LESS THAN (11),
PARTITION p2 VALUES LESS THAN (16),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
##说明当 store_id < 6 时数据放到p0 以此类推
CREATE TABLE test_table
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
action VARCHAR(20) NOT NULL,
timestamp TIMESTAMP NOT NULL,
PRIMARY KEY (id, timestamp)
)
PARTITION BY RANGE (UNIX_TIMESTAMP(timestamp))
(
PARTITION p0 VALUES LESS THAN (UNIX_TIMESTAMP('2014-08-01 00:00:00')),
PARTITION p1 VALUES LESS THAN (UNIX_TIMESTAMP('2014-11-01 00:00:00')),
PARTITION p2 VALUES LESS THAN (UNIX_TIMESTAMP('2015-01-01 00:00:00')),
PARTITION p3 VALUES LESS THAN (UNIX_TIMESTAMP('2015-02-01 00:00:00'))
);
##说明当 timestamp < 2014-08-01 00:00:00 时数据放到p0 以此类推
CREATE TABLE test_table
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
action VARCHAR(20) NOT NULL,
timestamp DATETIME NOT NULL,
PRIMARY KEY (id, timestamp)
)
PARTITION BY RANGE (YEAR(timestamp))
(
PARTITION p0 VALUES LESS THAN (2013),
PARTITION p1 VALUES LESS THAN (2014),
PARTITION p2 VALUES LESS THAN (2015),
PARTITION p3 VALUES LESS THAN (2016),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
##说明当 timestamp < 2013 时数据放到p0 以此类推
##查看分区表中有哪些分区
SELECT
TABLE_NAME,
PARTITION_NAME
FROM
information_schema.PARTITIONS
WHERE
table_schema = DATABASE ()
AND table_name = 'test_table'
##查看分区中有哪些数据
SELECT * FROM test_table PARTITION (p1);
##利用 EXPLAIN 可以看到只需搜对应的区,不会搜索所有分区
EXPLAIN
select * from employees where store_id=8;
##如果分区,分区字段的值必须要在分区规则内,否则报错。