我们正在设计数据库。假设我们有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编入索引。
我的数据很大。
答案 0 :(得分:1)
我有大数据的情况。 z选项更快。您必须在列z上定义索引。
答案 1 :(得分:1)
如果两个表中都有相同的对(x,y),则(以不正常的方式)存在冗余信息。冗余是一个禁忌 - #34;正确"数据库设计。
你所描述的背景任务是有问题的,所以我认为这是一个注定会造成麻烦的设计。
您无法立即设置A.z
吗?那将是最好的。请告诉我们实际的表格;通常,列名会导致其他讨论,从而导致其他解决方案。
这样的例子是x DATE, y TIME
- 将DATETIME分成两列通常很糟糕。