简述什么是笛卡尔乘积与小表join大表 ?

笛卡尔乘积是指两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。

对于小表join大表的笛卡尔乘积,可以通过规避的方法避免。具体比如给Join的两个表都增加一列Join key,原理很简单:将小表扩充一列join key,并将小表的总数复制数倍,每个join key各不相同,比如第一次为1,复制一次join key为2,依次类推;将大表扩充一列join key为随机数,这个随机数为小表里的join key的随机值,如1-5的随机值。这样就实现了将一个大表拆分几分同时处理,而且这样小表扩充了几倍,大表就被对应地分成几份处理。这种方式也可以提高笛卡尔乘积小表join大表的性能。

发表评论

后才能评论