2010-09-07 93 views
3

什麼是存儲字符串時使用的最佳數據類型,比如名字?我見過使用varchar和nvarchar。哪一個更好?有關係嗎?用於在SQL Server中存儲字符串的最佳數據類型?

我也聽說最好使用的長度是255,但我不知道爲什麼。是否有特定長度的字符串首選?

+0

通過char(256)使用varchar或nvarchar時的任何性能差異? – Matt 2010-09-07 02:22:44

+1

@Matt:如果你使用char,你的列總是佔用足夠的空間來指定字符數。這可以給你一個非常輕微的速度優勢,但除非你知道你的數據很少會在長度上變化,否則最終會浪費很多空間。最好用varchar或nvarchar。 – StriplingWarrior 2010-09-07 02:42:58

回答

12

nvarchar存儲unicode字符數據,如果您打算存儲非英文名稱,則需要該數據。如果它是一個Web應用程序,我強烈建議使用nvarchar,即使您沒有計劃在國際上。缺點是它消耗了兩倍的空間,nvarchar每個字符16位,varchar每個字符8位。

1

nvarchar表示您可以在其中保存unicode字符。 nvarchar類型有2GB限制。如果字段長度超過4000個字符,則使用溢出頁面。較小的字段意味着一個頁面可以容納更多行,從而提高查詢性能。

4

什麼是最好的數據類型使用 當存儲字符串,如第一個 名稱?我見過使用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

0

通常,對於小字符串使用nvarchar(n),它支持Unicode字符。與行或頁面壓縮一起使用時,字符串爲compressed(至少其中一個通常是可取的)。

大字符串需要nvarchar(max),Unicode壓縮不支持。

對於數據集從不使用Unicode字符的特殊情況,varchar(n)varchar(max)限制每個字符一個字節的字符串類型。

如果您知道最大長度(n)小於256,SQL Server只需要使用1個字節來存儲字符串長度。與最大長度剛剛超過255的字符串類型相比,這減少了大約一半的存儲空間。

相關問題