我想修改一个cron脚本,其中包括3个表插入、1个表更新和1个删除过程。 记录有数千条,因此插入数据需要很长时间。
数据被插入到产品表、产品付款表、产品详细信息表和产品图片表中。
当前脚本检查产品是否存在。 如果不存在,则先向products表插入数据,并返回新插入的产品id。之后,对其他三个表进行插入。图像表中可能会有多次插入(取决于图像的数量)。
如果产品已存在,请更新表。对于图像表,脚本删除该特定产品的现有图像记录,然后将所有图像作为新图像插入到图像表中。
这就是现在发生的情况:
if(!$prod_exists){
$product_id = insert_product($product_data) ;
if($product_id){
insert_payment($paymnt_data, $product_id);
insert_details($details_data, $product_id);
insert_images($image_data, $product_id);
}
}else{
update_product($product_data, $product_id)
update_payment($paymnt_data, $product_id);
update_details($details_data, $product_id);
delete_images($product_id);
insert_images($image_data, $product_id);
}
由于数据量巨大,执行时间较长。我们有什么方法可以优化整个流程吗?
谢谢 中号
最佳答案
您可以做的是使用REPLACE INTO
sql查询一次性插入一行或替换值。
看看这篇文章:http://blogs.coldbuffer.com/inserting-or-updating-records-using-mysql-replace
关于php - MySQL插入和更新优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23135515/