2014-01-23 144 views
6

我們有一個索引列(ModelName),它在表格中非常重要,與「目錄編號」非常相似,但它不是PK。在NVarchar(50)與NVarchar(255)列中使用索引?

很多ORDER by ModelName; WHERE ModelName等正在使用。

列最初開始作爲NVarchar(50),但改變後大小隨時間爲100,現在它需要的是255

我發現有很多帖子上"NVarchar(MAX) vs. NVarChar(N)",但我不能得到一個結論性的答案:

是否有使用NVarchar(255),而不是NVarchar(100)代替NVarchar(50)特別是當它涉及到指標任何/顯著的性能影響?

在性能方面,列長度(50)是否比長度(255)更短?並且可以針對索引進行特殊設置以提高性能?


這是在給予通過@a_horse_with_no_name另一個參考:阿里爾

Best practices for SQL varchar column length

注意答案:https://stackoverflow.com/a/8295195/1140885

凡說:

「具體來說,當進行分揀時,較大的欄杆佔用更多 的空間,所以如果這會損害性能,那麼你需要擔心它,並使它們變小。「

,並在註釋:

「上有索引的問題和限制來考慮,那麼也 不能有(A,B,C,d)指數在所有。四列是VARCHAR(255)」

沒有明確的結論/參考文檔等

+0

在性能方面,nvarchar(42),nvarchar(255)或nvarchar(639),沒有區別。另見這裏:http://stackoverflow.com/q/8295131/330315 –

+0

@a_horse_with_no_name,感謝您的鏈接,但是,'NVarchar'和'Varchar'執行相同的?我的問題是特定於'NVarchar'。 – ZigiZ

+0

@a_horse_with_no_name,此外,您提供的問題/答案(這非常有趣+1)根本不符合索引。只是在註釋中提到''「索引也存在問題和限制,當所有四列都是VARCHAR(255)」時,不能有(a,b,c,d)索引,並且''具體來說,在進行排序時,較大的列會佔用更多的空間「...... – ZigiZ

回答

2

一個可變長度的數據類型,如果你不斷積累數據指標將受到影響。規模越大,B-Tree中組合的機會越大,從而有效增加索引大小。在某些時候,索引大小將會過大,查詢將會受到影響。另一方面,如果你有所有類似的數據集作爲ModelName進入,將不會有太多問題

如果模型名稱像AAABB,AAABC,AAACC等它不會殺死你的表現,但標準偏差從一另一個變高,由於尺寸太大,索引性能會很差

相關問題