Оптимизация кода. Увеличение скорости. 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 миллиона запросов к БД. Каждый запрос, я так понимаю, отнимает достаточное количество времени. Есть ли какой-нибудь вариант вытащить сразу всё и имея "в уме" эти данные и определять какой товар мне нужен. Подскажите двумя-тремя словами как это ускорить, буду рад! Спасибо


Ответы (0 шт):