我試圖用「Python 2.7.4 + sqlite3」和「Firefox SQLite Manager 0.8.0」來處理同一個數據庫的請求。爲什麼python + sqlite3速度非常慢?
在微型數據庫(8000條記錄)上,Python和Firefox都運行得很快,結果相同。
在更大的數據庫(260萬個記錄):在28秒
- SQLite的經理處理數據庫(24個記錄)
- Python程序工作已經20分鐘沒有任何結果
什麼以下程序可能會出錯,所以python sqlite3無法在合理的時間內處理查詢,而相同的請求可以更快地處理?
import sqlite3
_sql1 = """SELECT DISTINCT J2.rule_description,
J2.feature_type,
J2.action_item_id,
J2.rule_items
FROM journal J1,
journal J2
WHERE J1.base = J2.base
AND J1.action_item_id=J2.action_item_id
AND J1.type="Action disabled"
AND J2.type="Action applied"
AND J1.rule_description="Some test rule"
AND J1.action_item_id IN (1, 2, 3, 14, 15, 16, 17, 18, 19, 30, 31, 32)
"""
if __name__ == '__main__':
sqlite_output = r'D:\results.sqlite'
with sqlite3.connect(sqlite_output) as connection:
for row in connection.execute(_sql1):
print row
UPDATE:Command Line Shell For SQLite也返回相同的24條記錄
UPDATE2: sqlite3.sqlite_version是 '3.6.21'
你肯定SQLite的經理正在處理** **所有結果行?你的Python程序是... –
是的,「SQLite命令行外殼」也提供了相同的24條記錄 –
也許數據庫文件被SQLite Manager鎖定? – warvariuc