CREATE TABLE table_name_1 ( id INT(11) NOT NULL AUTO_INCREMENT, col1 VARCHAR(50), col2 INT(11), col3 TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB; CREATE TABLE table_name_2 ( id INT(11) NOT NULL AUTO_INCREMENT, col1 VARCHAR(50), col2 INT(11), col3 TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB;
一种常见的分表策略是按照时间或者按照ID进行分表,比如按照年份进行分表:
CREATE TABLE table_name_2019 ( id INT(11) NOT NULL AUTO_INCREMENT, col1 VARCHAR(50), col2 INT(11), col3 TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB; CREATE TABLE table_name_2020 ( id INT(11) NOT NULL AUTO_INCREMENT, col1 VARCHAR(50), col2 INT(11), col3 TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB;
另一种常见的分表策略是按照数据量进行分表,比如每张表都存储1000条记录,当数据超过1000条时就会自动创建下一张表:
CREATE TABLE table_name_1 ( id INT(11) NOT NULL AUTO_INCREMENT, col1 VARCHAR(50), col2 INT(11), col3 TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB PARTITION BY HASH(id DIV 1000) PARTITIONS 10; CREATE TABLE table_name_2 ( id INT(11) NOT NULL AUTO_INCREMENT, col1 VARCHAR(50), col2 INT(11), col3 TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB PARTITION BY HASH(id DIV 1000) PARTITIONS 10;
在实际应用中,需要根据具体的业务需求来选择合适的分表策略,以达到最优的性能。