标签: java mysql algorithm cartesian-product
我研究过如何有效地计算两个任意集合的笛卡尔积,但我发现如果集合的大小变大,解决方案总是非常低效。我的问题是,像MySQL这样的数据库语言如何有效地完成这项任务,是否有算法或方式以数据库语言的方式模拟笛卡尔积??
PD:我正在使用java。
答案 0 :(得分:0)
基本上,没有 - 如果你想要一套两套尺寸为n,m的笛卡尔积 - 笛卡尔积的大小为n*m - 你需要O(nm)算法来生成它。
n,m
n*m
O(nm)
但是,对于数据库语言,当您执行'join'之类的操作时,有时您不需要生成整个连接来获得答案 - 如果您稍后要做的只是计数物品,或总和。 这可以在Pig Latin的 COGROUP 运算符中显示,它只创建一个隐式联接,以便以后只使用大小或总和 - 而不是真正的笛卡尔积。如果在适当的情况下正确使用,这可能会更有效。