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

2024-06-17 13:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

您有一个数据库,其中许多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)

Tags: 方法inid数据库forfoo记录bar
2条回答

唯一能比O(n^2)更快的方法是不插入n^2元素。在您的例子中,您可能只存储两个项目相关的记录,如果您希望只存储其中的几个。在SQL中,您可以形成查询来说明这一点,或者在一般使用的情况下,设置一个可更新的视图,以使这样一个倒排表像普通表一样工作。你知道吗

您需要插入n^2元素。没有比在n^2中更快的方法了。我唯一的建议是使用batch insert而不是单独插入。你知道吗

相关问题 更多 >