MySQL - 哪一个更快 - 用1个键或2个键连接2个表?

时间:2015-11-02 12:26:49

标签: mysql performance join key

我们正在设计数据库。假设我们有2个表A和B.目前他们有2列x和y包含相同的信息 - 换句话说,我们可以在A.x == B.x和A.y == B.y上加入A和B.

一个想法是,我们应该预处理表A,使其包含z和A.z = B.id.预处理仅在后台完成。现在我们可以在A.z == B.id。

上加入2个表

哪个JOIN会更快? (我们没有考虑预处理的时间)。

更新:

  • 关于索引:是的,对于解决方案1我已编入索引(A.x,A,y)和(B.x,B.y)。对于解决方案2,我将A.z和B.id编入索引。

  • 我的数据很大。

2 个答案:

答案 0 :(得分:1)

我有大数据的情况。 z选项更快。您必须在列z上定义索引。

答案 1 :(得分:1)

如果两个表中都有相同的对(x,y),则(以不正常的方式)存在冗余信息。冗余是一个禁忌 - #34;正确"数据库设计。

你所描述的背景任务是有问题的,所以我认为这是一个注定会造成麻烦的设计。

您无法立即设置A.z吗?那将是最好的。请告诉我们实际的表格;通常,列名会导致其他讨论,从而导致其他解决方案。

这样的例子是x DATE, y TIME - 将DATETIME分成两列通常很糟糕。