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