您有一个数据库,其中许多Foos
有许多Bars
,因此:
Foo --< FooBar >-- Bar
您有10个Foos和10个bar,需要将每个Foo
与每个Bar
相关联,方法是在FooBar中插入100条记录
除了下面的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)
唯一能比
O(n^2)
更快的方法是不插入n^2
元素。在您的例子中,您可能只存储两个项目不相关的记录,如果您希望只存储其中的几个。在SQL中,您可以形成查询来说明这一点,或者在一般使用的情况下,设置一个可更新的视图,以使这样一个倒排表像普通表一样工作。你知道吗您需要插入
n^2
元素。没有比在n^2
中更快的方法了。我唯一的建议是使用batch insert而不是单独插入。你知道吗相关问题 更多 >
编程相关推荐