缺陷:不支持text,blob(二进制)类型的字段进行分区
1、创建分区
DROP TABLE IF EXISTS `product_partiton_key`; CREATE TABLE `product_partiton_key` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `ProductName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `ProductId` int(11) NOT NULL, PRIMARY KEY (`Id`,`ProductName`) , INDEX `ProductId_index`(`ProductId`) ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 PARTITION BY KEY (ProductName) PARTITIONS 3 ;
四、List分区
优点:支持枚举类型的字段进行分区,比如商品状态,商品类型
1、创建分区
DROP TABLE IF EXISTS `product_partiton_list`; CREATE TABLE `product_partiton_list` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `ProductName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `ProductId` int(11) NOT NULL, `ProductStatus` int(11) NOT NULL, PRIMARY KEY (`Id`,`ProductStatus`) , INDEX `ProductId_index` (`ProductId`) ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 PARTITION BY LIST(ProductStatus)( PARTITION p0 VALUES in(0,1), PARTITION p1 VALUES in(2,3,4) );
2、插入数据
INSERT INTO product_partiton_list(ProductName,ProductId,ProductStatus) VALUES('XIAOHEMIAO',1,0); INSERT INTO product_partiton_list(ProductName,ProductId,ProductStatus) VALUES('XIAOHEMIAO',1,1); INSERT INTO product_partiton_list(ProductName,ProductId,ProductStatus) VALUES('XIAOHEMIAO',1,2); INSERT INTO product_partiton_list(ProductName,ProductId,ProductStatus) VALUES('XIAOHEMIAO',1,3); INSERT INTO product_partiton_list(ProductName,ProductId,ProductStatus) VALUES('XIAOHEMIAO',1,4);
3、查看当前表的分区情况
附:查询分区,各区表数据量
SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'table';
总结
1、分区字段必须是主键
2、分区字段,必须以分区字段进行查询,否则分区失效
友情链接
http://1000zx.cn/article/244256.htm
http://1000zx.cn/article/244313.htm
http://1000zx.cn/article/244318.htm
到此这篇关于MySql创建分区的文章就介绍到这了,更多相关MySql创建分区内容请搜索
更多相关Mysql内容来自木庄网络博客
标签:Mysql
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。