簡體   English   中英

使用 nvarchar(MAX) 的索引與基於具有固定字符的 nvarchar 的索引的性能?

[英]Performance of indexes that use nvarchar(MAX) vs ones based on nvarchar with fixed characters?

我有一個包含一定數量字符的字符串,我想將其作為 SQL Server 表的索引。

是否可以將它定義為nvarchar(MAX)或者最好指定它可能有多少個字符(例如nvarchar(10) ),以加快使用索引寫入和檢索數據的速度?

好吧,您可以在超過最大長度的nvarchar列上定義索引,但不能在nvarchar(max)

如果您嘗試使用太大的列,您將收到如下警告:

警告! 非聚集索引的最大鍵長度為 1700 字節。 索引“idx_t_x”的最大長度為 8000 字節。 對於某些大值組合,插入/更新操作將失敗。

因此,如果記錄中的字節數超過 900 或 1700 字節,則插入和更新將中斷,具體取決於 SQL Server 的版本:

SQL Server 2016 和 Azure SQL 數據庫增加了具有非聚集索引的索引鍵的最大大小。 非聚集索引的新最大鍵大小為 1700 字節。 聚集索引的最大鍵大小仍為 900 字節。

所以,有效的答案是“不”。 如果要在列中存儲文本,則可能需要全文索引。 如果您想防止重復,您可以考慮各種形式的散列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM