我想修改一個包含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