Добрый день.
Изучаю python и работу с SQLite3.
Очень смущает долгая обработка запроса.
Имеем VPS сервер 1 ядро в 2.5 ГГЦ и оперативки в 2 ГБ.
SQLite3 база с двумя таблицами. Записей в одной 11 миллионо в другой 3 миллиона.
требования из первой таблицы удалить все значения которые есть во второй. Сверка по одному столбцу.
Код в python который это делает:
print('Запуск удаления проверенных юзеров')
step = 0
cur.execute('''SELECT user_full_data_user_id FROM user_full_data''')
user_parsing_ok = cur.fetchall()
korteg = ()
for k in user_parsing_ok:
korteg += k
step += 1
cur.execute(f'''DELETE FROM parsing
WHERE parsing_user_id IN {korteg}''')
con.commit()
cur.execute('''VACUUM''') # Сжимаем таблицу удаляя пустые строки в ней
print(f'Строк проверенно {step}')
Данный код на удаленной машине выполняется уже 10 часов и еще не завершился.
ПОчему так медленно. Это ограничания SQLite3, сам Python медленный или я написал кривой код?