python простой выбор в SQLite 3 очень медленный - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть простая таблица SQLite с ~ 70 000 строк, которая была инициализирована так:

conn = sqlite3.connect(file, timeout=10, isolation_level = "DEFERRED", check_same_thread=False)
conn.row_factory = sqlite3.Row
conn.execute('pragma journal_mode=wal')

, когда я пытаюсь сделать простой запрос, такой как:

import pandas as pd
# anno is a simple string  like 'username'
query = f"select image,annotation from annotations where annotation = '{anno}'"
df = pd.read_sql(query, conn)

Это Раньше он был очень быстрым (~ 60 нс для выполнения), когда я впервые его тестировал,
Но после выполнения нескольких запросов он стал очень медленным!
выполнение кода может занять около 9 секунд!

Я добавил индекс в столбец аннотаций, но он не помог.

conn.execute('CREATE INDEX IF NOT EXISTS terms_index ON annotations(annotation)')

Скорость запроса низкая даже без использования pandas. Так что я не думаю, что pandas - это проблема, которая может привести к такой низкой производительности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...