Я попытался обработать один и тот же запрос в той же базе данных, используя «Python 2.7.4 + sqlite3» и «Firefox SQLite Manager 0.8.0».Почему python + sqlite3 очень медленный?
В крошечной базе данных (8000 записей) оба Python и Firefox работают быстро и дают одинаковый результат.
На большую базу данных (2600000 записей):
- SQLite Manager обрабатываются базы данных в 28seconds (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 Manager обрабатывает ** ** все строки результата? Ваша программа Python ... –
Да, «Командная строка Shell для SQLite» также дает те же 24 записи –
Возможно, файл базы данных заблокирован SQLite Manager? – warvariuc