【发布时间】:2010-11-03 10:17:48
【问题描述】:
如何实现高效的大型 Sqlite db 搜索(超过 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 只涉及必要的字段。
【问题讨论】:
-
@Alex:请使用任何基准信息更新您的问题。
标签: python sql database search performance