我有一个具有大约40列的表。在列名的唯一区别是,在过去的20所有的列名前“B”开始。此表用于比较。换句话说,比较在过去的20列在第20列中的数据的数据。

我知道这是很糟糕的设计,所以如何把这个表被重新设计,以便有只有20列,但我们还是可以比较的数据?

编辑:如果有帮助,我们也用这个数据来查找匹配队列

另外请注意,性能是主要关注这里。通过复制列中的数据得到的是非常快的。

谢谢!

有帮助吗?

解决方案

两种可能的体系结构和查询尖端。

1)建立您的表与“类型”列中,并用它来标记“主”与“备用”。在你的情况下, “A” 与 “B” 可能是适当的。

2)构建一个垂直隔板,两个相同的表(主要和备用数据),即共享共同的主键。 (当ID = 42是一个表,它必须是在另 - 除非“备用”数据是可选的,在这种情况下,不填充第二个表。)还任选地,具有第三表磁道的所有可能的主密钥,与已知的任何数据一起始终是共用的两个表

提示:阅读上SELECT ...除了和SELECT ...相交。他们令人不安快速运行,并且是两个数据集之间比较所有的行和列的区别(除了),并匹配(交叉)的想法。您可与这两个结构很容易使用,它会与你现有的代码以及工作(尽管它可能是fussier编写查询)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top