Оптимизация кода. Увеличение скорости. PostgreSQL. Psycopg2. Python
Товарищи, приветствую! У меня есть следующий код:
async def compare():
db = Use()
# Получаем все id
new_ids = await db.get_new_ids()
counter = 0
# по полученным id достаём товары из двух таблиц
for id_ in new_ids: # в этом месте пулы
# print('Счётчик:', counter)
new_prod = await db.get_new_prod(id_[0])
old_prod = await db.get_old_prod(id_[0])
# определяем условия
try:
new_price = int(int(new_prod[3]) / 100)
old_price = int(int(old_prod[3]) / 100)
need_price = int(old_price) - int(old_price * 0.2)
except TypeError:
pass
#это значит, что товар из новой партии отсутствует в старой
else:
# по условиям определяем какой товар подходит
if new_price < need_price:
new_prod_ = list(new_prod)
del new_prod_[0]
await db.add_good_prods(tuple(new_prod_))
print('Годный товар!')
counter += 1
Что он делает: в БД 2 таблицы. В каждой 2 миллиона товаров. Товары с одним и тем же id из двух БД и по условиям решаю добавлять мне товар или нет. Проблема: у меня 2 миллиона итерация в цикле, это 4 миллиона запросов к БД. Каждый запрос, я так понимаю, отнимает достаточное количество времени. Есть ли какой-нибудь вариант вытащить сразу всё и имея "в уме" эти данные и определять какой товар мне нужен. Подскажите двумя-тремя словами как это ускорить, буду рад! Спасибо