我想修改一个包含3个表插入,一个表更新和一个删除过程的cron脚本。 有成千上万条记录,因此插入数据需要很长时间。MySQL插入和更新优化
将数据插入产品表,产品付款表,产品明细表和产品图片表中。
当前脚本检查产品是否存在。 如果不存在,则先将数据插入产品表并返回新插入的产品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);
}
由于数据是巨大的,它需要更长的时间来执行时间。有什么方法可以优化整个过程吗?
感谢 中号
取决于您所做的更改,您可能可以通过执行INSERT INTO ..... ON DUPLICATE KEY UPDATE处理逃脱。这样,你可以插入一个记录,如果新的,如果没有更新它。最重要的是,使用INSERT,您可以在一条SQL语句上处理数百条记录,这可以大大减少所需的语句数量。 – Kickstart