我想对我的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
答案 0 :(得分:1)
在MySQL中PARTITION
是一种特殊的技术,用于水平根据某些键分割表格。这是不你所描述的内容。
“垂直分区”是一个松散应用的术语,更接近你似乎正在做的事情。它指的是具有列的'应该'是单个表被分成两个表,并且表以1:1的关系链接。你通过PRIMARY KEYs
建立了这种关系。
您的查询是执行将列重新组合在一起所需的JOIN
的示例。 (@Maxim对查询的重新制定更好;你应该使用它。)
很少有必要对表进行垂直分区。请解释你为什么要这样做。我们可以讨论您的案件是否值得保证。首先为两个表提供SHOW CREATE TABLE
。
答案 1 :(得分:0)
我会使用Inner Join:
SELECT * FROM table1 INNER JOIN table2 ON table1.a1 = table2.a2;