插入N ^ 2项比使用N ^ 2循环有更快的方法吗?

时间:2016-06-06 22:58:16

标签: python database algorithm

您有一个数据库,其中有多个Foos有多个Bars,所以:

Foo --< FooBar >-- Bar

你有10个Foos和10个条,需要通过在FooBar中插入100条记录将每个Foo与每个Bar相关联

除了以下N^2循环之外,还有更有效的方法来执行此操作,还是我们坚持这个?

def associate(foos, bars):
    for foo in foos:
        for bar in bars:
            # INSERT INTO foobar (foo_id, bar_id) VALUES (foo.id, bar.id)

2 个答案:

答案 0 :(得分:2)

您需要插入n^2个元素。没有办法比n^2更快地做到这一点。我唯一能建议的是使用batch insert而不是单独插入。

答案 1 :(得分:2)

加速O(n^2)的唯一方法是不插入n^2元素。在您的情况下,您可能只存储两个项目相关的记录,如果您希望只有其中一些。在SQL中,您可以形成您的查询以解决此问题,或者在一般用法的情况下,设置可更新视图以使这样的反转表行为正常。