您有一个数据库,其中有多个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)
答案 0 :(得分:2)
您需要插入n^2
个元素。没有办法比n^2
更快地做到这一点。我唯一能建议的是使用batch insert而不是单独插入。
答案 1 :(得分:2)
加速O(n^2)
的唯一方法是不插入n^2
元素。在您的情况下,您可能只存储两个项目不相关的记录,如果您希望只有其中一些。在SQL中,您可以形成您的查询以解决此问题,或者在一般用法的情况下,设置可更新视图以使这样的反转表行为正常。