我從PHP這個查詢:試圖優化此MySQL查詢(選擇,在同一個查詢插入和更新)
mysql_query("INSERT INTO ".table_hack." (id,ip,count,lasttime)
VALUES (NULL,'".$ip."',1,NOW())
ON DUPLICATE KEY UPDATE count=count+1, lasttime=NOW();");
正如你所看到的IM在table_hack
插入新記錄只如果唯一元素不存在,在我的情況下是ip。如果元素存在,則查詢更新1中的count
和NOW()參數的值lasttime
。
我也想知道count在同一個查詢中的值,有可能嗎?我知道我可以做另一個查詢,但我希望只在一個(如果可能的話)。謝謝你的幫助!
你想讓它成爲1查詢的任何特定原因? 您是否考慮過交易? –
只是好奇心和優化。 – DomingoSL
我能想到的唯一優化是檢查affected_rows。如果返回2,則知道計數已更新,以便您可以查詢計數。如果它返回1,它只插入記錄,所以你知道count = 1,不必做選擇查詢。 – Nin