我是数据库的新手,只是使用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?)
答案 0 :(得分:2)
答案 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))''')