php - MySQL插入和更新优化

标签 php mysql optimization

我想修改一个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/

相关文章:

python - 设置 django 到 mysql

php - php,mysql 父类页面显示子类商品

PHP页面运行成功但MySql查询未运行

PHP 优化 - 减少内存使用

php - 建议使用以下哪种跨分片数据复制选项?

php - base64 字符串中的 IOS Swift UIImage 到 PHP

php - 用于游戏的 Google Play 商店 API

mysql - 从 mysql 中拖动并进行计数和限制

web-services - 定时任务 : Web Service query

PHP:禁用@错误控制运算符