分区两个表的最佳策略是什么?

时间:2016-12-19 21:22:12

标签: 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

2 个答案:

答案 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;

更多信息:http://www.w3schools.com/sql/sql_join.asp