# Set isolation_level=None to use auto-commit
conn = sqlite3.connect('example.db', isolation_level=None)
來實驗看看執行 10000 次 INSERT 的敘述,
for i in range(0, 10000):
conn.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
居然要 657 秒!!
因為每一筆 INSERT 都是一筆 Transaction,太花時間了,
所以如果我們只建立一筆 Transaction,
然後把 Statements 都塞到同一個 Transaction 再執行:
conn.execute("BEGIN IMMEDIATE TRANSACTION");
# Insert a row of data
for i in range(0, 10000):
conn.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
conn.execute("COMMIT TRANSACTION");
結論: 發現只要 0.17 秒,差了快 400 倍啊!!
沒有留言:
張貼留言