mysql - 如何按键分区和子分区MySQL?

标签 mysql database database-partitioning

我想为我的 innoDB 表添加分区。我曾尝试搜索此语法,但未找到具体细节。

这个语法有错吗? :

ALTER TABLE Product PARTITION BY HASH(catetoryID1) PARTITIONS 6
SUBPARTITION BY KEY(catetoryID2) SUBPARTITIONS 10;

SUBPARTITIONS 10 是指每个主分区有 10 个子分区,还是意味着所有主分区都有 10 个子分区?

最佳答案

很奇怪你没有找到语法。 MySQL 在线文档列出了最常见操作的非常详细的语法。

在此处查看用于分区的 alter table 的整体语法:

http://dev.mysql.com/doc/refman/5.5/en/create-table.html

即使与 alter table 语句一起使用,分区管理的语法也将保持不变,MySQL 文档中的 alter table 语法页面列出了一些细微差别。

要回答您的第一个问题,问题不在于您的语法,而在于您正在尝试对首先通过哈希分区分区的表进行子分区——这是不允许的,至少在 MySQL 5.5 中是这样。只有 Range 或 List 分区可以进行子分区。

在此处查看分区类型的完整列表:

http://dev.mysql.com/doc/refman/5.5/en/partitioning-types.html

至于第二个问题,假设您尝试的方法可行,您将创建 6 个按 catetoryID1 散列的分区,然后在这些分区中有 10 个按 catetoryID2 散列的子分区。所以你总共有

6 x 10 = 60 partitions

关于mysql - 如何按键分区和子分区MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12532850/

相关文章:

mysql - 如何更改我的子选择,我可以使用 WHERE IN 获取多行?

sql - 如何在2个表之间建立一对多关系

mysql - MySQL 如何知道要查找哪个分区?

sql - 有没有办法从分区表中删除范围值(sql server 2012)

MySql 分区表 - 使用 PK 在日期范围之间进行选择与 date IN (...) 子句相比非常慢

mysql - 如何为此条件创建 mysql 查询?

php - 在 php/mysql 中使用多个数据库

database - Web 应用程序 : managing users database access

Mysql查看速度很慢

php - 左连接计数