什麼是存儲字符串時使用的最佳數據類型,比如名字?我見過使用varchar和nvarchar。哪一個更好?有關係嗎?用於在SQL Server中存儲字符串的最佳數據類型?
我也聽說最好使用的長度是255,但我不知道爲什麼。是否有特定長度的字符串首選?
什麼是存儲字符串時使用的最佳數據類型,比如名字?我見過使用varchar和nvarchar。哪一個更好?有關係嗎?用於在SQL Server中存儲字符串的最佳數據類型?
我也聽說最好使用的長度是255,但我不知道爲什麼。是否有特定長度的字符串首選?
nvarchar存儲unicode字符數據,如果您打算存儲非英文名稱,則需要該數據。如果它是一個Web應用程序,我強烈建議使用nvarchar,即使您沒有計劃在國際上。缺點是它消耗了兩倍的空間,nvarchar每個字符16位,varchar每個字符8位。
nvarchar表示您可以在其中保存unicode字符。 nvarchar類型有2GB限制。如果字段長度超過4000個字符,則使用溢出頁面。較小的字段意味着一個頁面可以容納更多行,從而提高查詢性能。
什麼是最好的數據類型使用 當存儲字符串,如第一個 名稱?我見過使用varchar和nvarchar 。哪一個更好? 它有關係嗎?
見What is the difference between nchar(10) and varchar(10) in MSSQL?
如果您需要非ASCII字符,你必須使用nchar
/nvarchar
。如果你不這樣做,那麼你可能想要使用char
/varchar
來節省空間。
請注意,此問題是特定於MS SQL Server,其中doesn't have good support for UTF-8。在其他SQL實現中,您可以使用Unicode字符串,而不需要額外的空間(對於英語)。
我也聽說最好使用的長度爲 是255,但我不知道爲什麼。
見Is there a good reason I see VARCHAR(255) used so often (as opposed to another length)?
是否有被 首選字符串一個特定的長度?
如果您的數據具有明確定義的最大限制(例如VIN爲17個字符),則使用該限制。
OTOH,如果限制是任意的,那麼選擇一個慷慨的最大大小來避免拒絕有效數據。在SQL Server中,您可能需要考慮900-byte maximum size of index keys。
通常,對於小字符串使用nvarchar(n)
,它支持Unicode字符。與行或頁面壓縮一起使用時,字符串爲compressed(至少其中一個通常是可取的)。
大字符串需要nvarchar(max)
,Unicode壓縮不支持。
對於數據集從不使用Unicode字符的特殊情況,varchar(n)
和varchar(max)
限制每個字符一個字節的字符串類型。
如果您知道最大長度(n
)小於256,SQL Server只需要使用1個字節來存儲字符串長度。與最大長度剛剛超過255的字符串類型相比,這減少了大約一半的存儲空間。
通過char(256)使用varchar或nvarchar時的任何性能差異? – Matt 2010-09-07 02:22:44
@Matt:如果你使用char,你的列總是佔用足夠的空間來指定字符數。這可以給你一個非常輕微的速度優勢,但除非你知道你的數據很少會在長度上變化,否則最終會浪費很多空間。最好用varchar或nvarchar。 – StriplingWarrior 2010-09-07 02:42:58