"Python 2.7.4 + sqlite3"と "Firefox SQLite Manager 0.8.0"を使って、同じデータベースに同じリクエストを処理しようとしました。なぜpython + sqlite3が極端に遅いのですか?
小さなデータベース(8000レコード)では、PythonとFirefoxの両方が高速で動作し、同じ結果が得られます。大きなデータベース(2600000記録)で
:
- のSQLite Managerのいずれかの結果なし
何次のプログラムで間違っている可能性がありますので、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:問題は古いと関連していること、 sqlite3.sqlite_versionは '3.6.21'
あなたはSQLiteのマネージャが**すべて**結果行を処理していることが確実な?あなたのPythonプログラムは... –
はい、 "SQLiteのコマンドラインシェル"も同じ24レコードを返します –
多分、データベースファイルはSQLite Managerによってロックされていますか? – warvariuc