sql中use語(yǔ)句 sql中4個(gè)漢字用char(10)還是varchar(8)?
sql中4個(gè)漢字用char(10)還是varchar(8)?一般認(rèn)為varchar的效率低于char,因?yàn)関archar在插入時(shí)會(huì)判斷字段長(zhǎng)度并做出權(quán)衡。其實(shí),所有廠商都在做這部分的優(yōu)化,現(xiàn)在看來(lái)沒(méi)有
sql中4個(gè)漢字用char(10)還是varchar(8)?
一般認(rèn)為varchar的效率低于char,因?yàn)関archar在插入時(shí)會(huì)判斷字段長(zhǎng)度并做出權(quán)衡。其實(shí),所有廠商都在做這部分的優(yōu)化,現(xiàn)在看來(lái)沒(méi)有什么區(qū)別(至少?gòu)奶幚砬f(wàn)級(jí)的角度來(lái)說(shuō),感覺(jué)沒(méi)有什么區(qū)別,當(dāng)然,可能跟數(shù)據(jù)倉(cāng)庫(kù)沒(méi)有更新有關(guān))。四個(gè)漢字一般理解為8個(gè)字節(jié)。如果漢字的個(gè)數(shù)是1,2,3,4,最好根據(jù)空格使用varchar(8)。當(dāng)然,它可以節(jié)省空間,但已經(jīng)所剩無(wú)幾,除非數(shù)據(jù)量特別大,否則是看得出來(lái)的。如果只保存了四個(gè)漢字而沒(méi)有其他數(shù)字,為什么不使用char(8)呢?另一種情況是選擇char,即有更多更新時(shí)。在這種情況下,char比VARCHAR2好。
SQL中varchar和nvarchar有什么區(qū)別?
Varchar(n)
是長(zhǎng)度為n字節(jié)的非Unicode字符數(shù)據(jù)。N必須是介于1和8000之間的值。存儲(chǔ)大小是輸入數(shù)據(jù)字節(jié)的實(shí)際長(zhǎng)度,而不是n字節(jié)。輸入數(shù)據(jù)的字符長(zhǎng)度可以為零。SQL-92中varchar的同義詞是charvarying或charactervarying。
Nvarchar(n)
包含n個(gè)字符的可變長(zhǎng)度Unicode字符數(shù)據(jù)。N的值必須介于1和4000之間。字節(jié)的存儲(chǔ)大小是輸入字符數(shù)的兩倍。輸入的字符長(zhǎng)度可以為零。SQL-92中nvarchar的同義詞有民族性變和民族性變。
首先,varchar和nvarchar可以存儲(chǔ)漢字。不同的是,漢字代表varchar(2),只有nvarchar(1),而字母代表varchar(1)。在計(jì)算數(shù)據(jù)庫(kù)字段的長(zhǎng)度時(shí),varchar不一定知道它有多少個(gè)字符。如果使用nvarchar,漢字也是nvarchar(1),字母也是nvarchar(1),那么很容易知道字段的長(zhǎng)度,為時(shí)已晚。
其次,varchar比nvarchar快