gpt4 book ai didi

python - 大型 Sqlite 数据库搜索

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:12 25 4
gpt4 key购买 nike

如何实现高效的大型 Sqlite 数据库搜索(超过 90000 个条目)?

我正在使用 Python 和 SQLObject ORM:

    import re
...

def search1():
cr = re.compile(ur'foo')
for item in Item.select():
if cr.search(item.name) or cr.search(item.skim):
print item.name

此函数运行时间超过 30 秒。我应该如何让它运行得更快?

UPD:测试:

    for item in Item.select():
pass

... 与我的初始函数花费的时间几乎相同(0:00:33.093141 到 0:00:33.322414)。所以正则表达式不吃时间。

一个 Sqlite3 shell 查询:

    select '' from item where name like '%foo%';

大约一秒钟后运行。因此,主要的时间消耗是由于 ORM 从 db 中检索数据的效率低下造成的。我猜 SQLObject 在这里抓取整行,而 Sqlite 只接触必要的字段。

最佳答案

最好的方法是重新设计您的逻辑以在数据库中而不是在您的 Python 程序中进行选择。

而不是做 Item.select(),你应该修改它做 Item.select("""name LIKE ....

如果您这样做,并确保您已为名称和略读列建立索引,它将很快返回。 90000 个条目不是一个大数据库。

关于python - 大型 Sqlite 数据库搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1002953/

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