Python postgresql更新功能花费的时间太长

Python postgresql更新功能花费的时间太长,python,postgresql,flask,sqlalchemy,flask-sqlalchemy,Python,Postgresql,Flask,Sqlalchemy,Flask Sqlalchemy,我有一张桌子叫 产品 其中包含列 id,数据 这里的数据是一个JSONB。 id是唯一的id 我尝试批量添加10k产品,这花费了我将近4分钟的时间。 使用较低的产品更新效果很好,但是对于大量的产品来说,这需要很多时间,我如何优化它? 我正在尝试批量更新200k+产品,现在需要5分钟以上的时间 updated_product_ids = [] for product in products: new_product = model.Product(id, data=product['dat

我有一张桌子叫

产品

其中包含列

id
数据

这里的数据是一个JSONB。 id是唯一的id

我尝试批量添加10k产品,这花费了我将近4分钟的时间。 使用较低的产品更新效果很好,但是对于大量的产品来说,这需要很多时间,我如何优化它? 我正在尝试批量更新200k+产品,现在需要5分钟以上的时间

updated_product_ids = []
for product in products:
    new_product = model.Product(id, data=product['data'])
    new_product['data'] = 'updated data'
    new_product['id'] = product.get('id')
    updated_product_ids.append(new_product)

def bulk_update(product_ids_arr):
   def update_query(count):
            return f"""
            UPDATE pricing.products
            SET data = :{count}
            WHERE id = :{count + 1}
            """

        queries = []
        params = {}
        count = 1
        for sku in product_ids_arr:
            queries.append(update_query(count))
            params[str(count)] = json.dumps(sku.data)
            params[str(count + 1)] = sku.id
            count += 2

        session.execute(';'.join(queries), params) #This is what takes so long..


bulk_update(updated_product_ids)
我原以为使用原始sql执行此操作会更快,但这需要花费很多时间


我正在尝试更新大约8k产品,这几乎需要3分钟或更长时间。

突出的事情是:
批量更新在定义之前执行,
更新查询
从未执行过,如果不使用它,你不需要关心
执行人
的模式。@KlausD。谢谢你指出这些。我更新了线程。为每个查询创建一个字符串是一项相当艰巨的工作,使用SQLAlchemy的核心或批量插入工具可能可以避免。不过,我也建议对更新进行批处理,并提交每个批。如果您在每1000次更新之后提交,那么数据库可以分配更少的资源,这应该会提高性能。您可以尝试找到每批记录的最佳数量。相关:什么是
sku
?它在任何地方都没有定义。