应该如何有两套几乎重复列名的表来设计?
-
25-09-2019 - |
题
我有一个具有大约40列的表。在列名的唯一区别是,在过去的20所有的列名前“B”开始。此表用于比较。换句话说,比较在过去的20列在第20列中的数据的数据。
我知道这是很糟糕的设计,所以如何把这个表被重新设计,以便有只有20列,但我们还是可以比较的数据?
编辑:如果有帮助,我们也用这个数据来查找匹配队列
另外请注意,性能是主要关注这里。通过复制列中的数据得到的是非常快的。
谢谢!
解决方案
两种可能的体系结构和查询尖端。
1)建立您的表与“类型”列中,并用它来标记“主”与“备用”。在你的情况下, “A” 与 “B” 可能是适当的。
2)构建一个垂直隔板,两个相同的表(主要和备用数据),即共享共同的主键。 (当ID = 42是一个表,它必须是在另 - 除非“备用”数据是可选的,在这种情况下,不填充第二个表。)还任选地,具有第三表磁道的所有可能的主密钥,与已知的任何数据一起始终是共用的两个表
提示:阅读上SELECT ...除了和SELECT ...相交。他们令人不安快速运行,并且是两个数据集之间比较所有的行和列的区别(除了),并匹配(交叉)的想法。您可与这两个结构很容易使用,它会与你现有的代码以及工作(尽管它可能是fussier编写查询)。
不隶属于 StackOverflow