我有一个有几亿行的 sqlite 表:
sqlite> create table t1(id INTEGER PRIMARY KEY,stuff TEXT );
我需要通过它的整数主键来查询这个表数亿次。我的代码:
conn = sqlite3.connect('stuff.db')
with conn:
cur = conn.cursor()
for id in ids:
try:
cur.execute("select stuff from t1 where rowid=?",[id])
stuff_tuple = cur.fetchone()
#do something with the fetched row
except:
pass #for when id is not in t1's key set
在这里,ids 是一个可能包含数万个元素的列表。形成 t1 并没有花费很长时间(即每秒插入约 75K 次)。以我的方式查询 t1 速度慢得令人无法接受(即 10 秒内约 1K 次查询)。
我对 SQL 完全陌生。我究竟做错了什么?