我有一个过程用于更新记录值,想要将其应用于表中的所有记录(超过30k条),该过程的执行时间为2至10秒,因为它取决于网络负载。
现在我正在使用"UPDATE table SET field = procedure_name(paramns);"来执行此操作,但是针对这么多记录的处理需要长达40分钟。
现在,我使用4个不同的连接分叉到后台,并设置WHERE子句以迭代行ID的模数来加快查询速度,( WHERE id_field % 4 = ),这样做效果很好,可以将表格填充时间缩短到约10分钟。
但是,我想避免使用cron、shell作业和多个连接进行此操作,我知道可以使用libpq来实现,但是是否有一种方法可以启动查询(四个不同的非阻塞查询)并且不等待其执行完成,而是在单个连接中?
或者,如果有人能够给我指出如何使用PostgreSQL内部或简单地以C语言编写并绑定为存储过程的方法,那将更好。谢谢Darius。
现在我正在使用"UPDATE table SET field = procedure_name(paramns);"来执行此操作,但是针对这么多记录的处理需要长达40分钟。
现在,我使用4个不同的连接分叉到后台,并设置WHERE子句以迭代行ID的模数来加快查询速度,( WHERE id_field % 4 = ),这样做效果很好,可以将表格填充时间缩短到约10分钟。
但是,我想避免使用cron、shell作业和多个连接进行此操作,我知道可以使用libpq来实现,但是是否有一种方法可以启动查询(四个不同的非阻塞查询)并且不等待其执行完成,而是在单个连接中?
或者,如果有人能够给我指出如何使用PostgreSQL内部或简单地以C语言编写并绑定为存储过程的方法,那将更好。谢谢Darius。