MySQL中insert語(yǔ)句value和set的區(qū)別



在標(biāo)準(zhǔn)的SQL語(yǔ)句中,插入一條語(yǔ)句是用:

insert into table (field1,field2) values (value1,value2)

而MySQL中提供了一條擴(kuò)展語(yǔ)句:

insert into table set field1 = value1,field2 = value2

第一個(gè)是SQL標(biāo)準(zhǔn),第二個(gè)是MySQL的擴(kuò)展(也就是說只能用在mysql數(shù)據(jù)庫(kù)中的)


有人說它們是等價(jià)且效率是相同的,下面是測(cè)試:


用來測(cè)試的表字段如下

1.png

標(biāo)準(zhǔn)SQL語(yǔ)句,執(zhí)行時(shí)間為6.0ms

insert into user(username,password,realname,addtime) values('test','test','test','12345678901')
2.png

MySQL擴(kuò)展,執(zhí)行時(shí)間為1.9ms

insert into user set username='test',password='test',realname='test',addtime='12345678901'

3.png

可以看出,后者執(zhí)行效率要遠(yuǎn)高于標(biāo)準(zhǔn)values語(yǔ)法。
你只需要遍歷一組鍵值對(duì)來創(chuàng)建你的insert語(yǔ)句,而不是使用values語(yǔ)法所需的兩倍。


所以,使用set語(yǔ)法的語(yǔ)句可以更短,更清晰,以高效率更快寫入,并且可以有效避免在編寫values子句時(shí)混合列順序?qū)е碌钠磳戝e(cuò)誤


但是,在可移植性上面,只在MySQL上支持的set語(yǔ)法明顯失去了優(yōu)勢(shì),并且在多條插入上,它也同樣雞肋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容