1

我是数据库新手,刚刚使用 . 编写了我的第一个代码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?)

4

2 回答 2

2

你应该索引你的数据库:

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

这应该加快速度。

于 2013-05-20T15:30:30.360 回答
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))''')
于 2013-05-20T15:55:38.410 回答