在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ mysql delete前有沒(méi)有必要select一下

mysql delete前有沒(méi)有必要select一下

mysql在執(zhí)行delete操作前有沒(méi)有必要先select判斷下。

A:

select Amount into mAmount from list where uid = 12;
if mAmount = 1
then
    delete from list where uid = 12;
else
    update list set Amount = Amount - 1 where uid = 12;
end if;

B

delete from list where uid = 12 and Amount - 1  = 0;
if ROW_COUNT() <> 1
then
    update list set Amount = Amount - 1 where uid = 12;
end if;

a和b在高并發(fā)下哪個(gè)效果好點(diǎn)。

回答
編輯回答
維他命

刪除前是否要先查詢(xún)一次,這個(gè)個(gè)人覺(jué)得應(yīng)視業(yè)務(wù)而定。正常情況是沒(méi)有這個(gè)必要,刪除通常按主鍵刪除,性能不是問(wèn)題,但如果刪除的數(shù)據(jù)部分字段有緩存的話(huà),應(yīng)該先查一下,主要是為了方便清理緩存。舉個(gè)栗子:假如要?jiǎng)h除一個(gè)用戶(hù),用戶(hù)的手機(jī)號(hào)存在于緩存中(比如已注冊(cè)手機(jī)號(hào)集合),此時(shí)直接刪除數(shù)據(jù)的話(huà),緩存里的手機(jī)號(hào)就不會(huì)被移除,導(dǎo)致后來(lái)的人再也不能用這個(gè)手機(jī)號(hào)注冊(cè),所以應(yīng)先查詢(xún),再刪除,查詢(xún)只是為了處理附加業(yè)務(wù)。

我只是從業(yè)務(wù)角度來(lái)講的,與性能無(wú)關(guān)。

2017年3月12日 08:02