mysql - 对两个表进行分区的最佳策略是什么?

标签 mysql database-design partitioning

我想对 2 个表进行分区,即 table1(a1,b1)table2(a2,b2),其中 a1a2 是两个表的主键。那么对这两个表进行分区以支持查询的最佳策略应该是什么:

SELECT * FROM table1, table2 WHERE table1.a1 = table2.a2

其他信息

基于该分区策略,我还想决定使用哪个联接来有效运行以下查询:

SELECT * FROM table1, table2 WHERE table1.a1 = table2.b2

最佳答案

在 MySQL 中,PARTITION 是一种基于某些键水平拆分表的特殊技术。这不是您所描述的。

“垂直分区”是一个松散应用的术语,更接近您似乎正在做的事情。它是指将“应该”是单个表的列分成两个表,并且这些表以 1:1 关系链接。你们通过他们的主键建立了这样的关系。

您的查询是执行将列重新组合在一起所需的 JOIN 的示例。 (@Maxim 对查询的重新表述更好;您应该使用它。)

很少有必要对表进行垂直分区。请解释一下你为什么要这样做。我们可以讨论您的情况是否合理。首先为两个表提供 SHOW CREATE TABLE

关于mysql - 对两个表进行分区的最佳策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41231215/

相关文章:

PostgreSQL 分区。约束排除未在 SELECT 上启动

scala - 如何对 RDD 进行分区

mysql - 从表中选择行,其中具有相同 ID 的另一个表中的行在另一列中具有特定值

mysql - SQL:使颜色表中的颜色可搜索

database - 简单银行帐户的衍生帐户余额与存储帐户余额?

database - 我知道 Redis 对于数据库来说速度很快,但是 Redis 便宜吗?

mysql - 将表从主 MySQL 服务器动态分区到远程 MySQL 服务器

mysql - osx, mysql 命令进入/var/empty

MYSQL从表1中获取表2中不存在的记录

sql - 数据库中的建模类(class)和先决条件