gpt4 book ai didi

Python 性能 : search large list vs sqlite

转载 作者:行者123 更新时间:2023-11-28 19:59:39 25 4
gpt4 key购买 nike

假设我有一个包含三列的数据库表:idfield1field2。此表中可能包含 100 到 100,000 行之间的任何位置。我有一个 python 脚本,应该将 10-1,000 个新行插入到这个表中。但是,如果新的 field1 已经存在于表中,它应该执行 UPDATE,而不是 INSERT

以下哪种方法更有效?

  1. 执行SELECT field1 FROM table(field1 是唯一的)并将其存储在列表中。然后,对于每个新行,使用 list.count() 来确定是INSERT 还是UPDATE
  2. 对于每一行,运行两个查询。首先,SELECT count(*) FROM table WHERE field1="foo" 然后是 INSERTUPDATE

换句话说,是执行 n+1 个查询并搜索一个列表更有效率,还是执行 2n 个查询并让 sqlite 进行搜索更有效率?

最佳答案

如果我正确理解您的问题,您似乎可以简单地使用 SQLite 的内置冲突处理机制。

假设您对 field1 有一个 UNIQUE 约束,您可以简单地使用:

INSERT OR REPLACE INTO table VALUES (...)

还支持以下语法(相同的语义):

REPLACE INTO table VALUES (...)

编辑:我意识到我并没有真正回答你的问题,只是提供了一个应该更快的替代解决方案。

关于Python 性能 : search large list vs sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com