数億行の 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 の形成にそれほど時間はかかりませんでした (つまり、1 秒あたり ~75K の挿入)。私が行った方法で t1 をクエリすると、容認できないほど遅くなります (つまり、10 秒で ~1K のクエリ)。
私はSQLにまったく慣れていません。私は何を間違っていますか?