У меня есть простая таблица 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 - это проблема, которая может привести к такой низкой производительности?