加速sqlite3数据库搜索

时间:2013-05-20 15:20:41

标签: python database sqlite

我是数据库的新手,只是使用sqlite3编写了我的第一个代码。它完成了工作,但运行速度非常慢,我希望得到一些关于如何加快速度的建议。

现在我的代码看起来像这样:

For Line in File:
   Line= Line.strip('\n').split('\n')
   Location = int(Line[1])
   MChr = Line[0]
cur = db.execute('''SELECT Start, End, Chr, Feature1, Feature2, Feature3, Feature4, FROM DataBase
                    WHERE Start <= ? AND End >= ? AND Chr == ?''', (Location, Location, MChr))
for (Start, Stop, Chr, Feature1, Feature2, Feature3, Feature4) in cur:
    if Feature1 == "A string":
        do something....
    if Feature2 == "A string":
        do something....

我的数据库有一百多万个条目,这可能是我的程序运行缓慢的原因,但我想知道是否有办法让搜索更有效率,以避免必须为每一行运行所有百万。 (或许首先拉出所有匹配的Chrs?)

2 个答案:

答案 0 :(得分:2)

您应该索引db:

http://www.sqlite.org/lang_createindex.html

这应该可以加快速度。

答案 1 :(得分:1)

在相关列上创建索引。如果您的表格名称为DataBase,请尝试以下内容:

db.execute('''CREATE UNIQUE INDEX Start_index ON `DataBase` (`Start`(64))''')
db.execute('''CREATE UNIQUE INDEX End_index ON `DataBase` (`End`(64))''')
db.execute('''CREATE UNIQUE INDEX Chr_index ON `DataBase` (`Chr`(64))''')