我有两个非常大的表,其中包含数百万个条目,它们包含相似的记录。因此,TableA可能具有与TableB不同的列结构来存储相同的数据,但TableA和TableB都包含用于记录的唯一指纹的列。找出TableA和TableB中包含相同指纹的常用条目的最佳方法是什么?这里也有类似的问题在这里问过几次,但这里有一些变化。假设我将常见条目的pk存储在TableC(pk_a, pk_b, fingerprint)
中,表示表A和表B中的公共元组。现在,无论何时将记录添加到TableA或TableB中或从中删除,都需要更新TableC。查找两个超大型数据库表中的常见条目
我对第一部分的解决方案是将指纹上的TableA和TableB连接加入到指纹中,并将其添加到TableC中。
对于第二部分,查询类似指纹的TableC,然后在找到任何匹配的情况下更新TableC。如果找不到匹配项,则扫描TableB(假设记录已添加到TableB)指纹,然后更新TableC。
但是,这是非常直观的,并且na ï ve。我觉得可以以更好的方式完成。
任何想法的人?
最终用途是什么?我的意思是,相关性需要实时准备好?或者,也许你可以避免插入的所有开销,并在午夜运行批处理? – SJuan76
最终用途可能会有所不同。它是一个面试问题。尽管运行批处理过程可能是一个非常实用的解决方案,但也许人们已经在使用其他一些聪明的机制来完成它。 –
那么,即使在采访中,我也会回过头来希望得到更简洁的重新设置(更广泛的重新设置 - >成本效益更低的实施)。另一个有趣的问题是,如果有一些共同的列,即使它们不是PK,他们在加入时会派上用场。无论如何,我正在写一个替代答案。 – SJuan76