sql nvarchar长度是否重要?

问题描述:

我正在查看设置为nvarchar(50)的表格内容只有2个字符或为空。改变它很重要吗?如果经常在IN子句中使用,那么最佳类型是什么?sql nvarchar长度是否重要?

那么为什么不使用nvarchar(2)来确保只有2个字符被写入?这是一个约束,确保数据符合预期。

此外,如果您知道值将只有ASCII然后使用varchar而不是nvarchar

最后,长度约束不会对IN条款有何影响假定,如果大小总是2的所有值不能超过2.

+0

我应该指定。我对表现最好奇。例如,有一个太长的字段会影响where子句中的速度吗? –

+0

@PatrickSchomburg - 重要的是该领域的价值。字段长度为2000并存储2个字符将不会影响'where'子句。会有什么影响是记录的数量,你如何比较和索引(如果他们在那里,他们是如何构造的,他们是零散的)。唯一真正的例外是长度'max',因为这些值可能会跨越页面到一个overlfow,在这种情况下,我不确定任何索引如何工作,但这只影响也超过4000的值(我相信)。 – Igor

+0

在这种情况下,使用null与空字符串值是否有优势/劣势? –

长度我会用nchar(2)对Unicode或char(2)非Unicode的或null

使用超大的可变宽度列会影响内存授予和行大小估计,因为SQL Server会假定每行保存的值是声明列大小的一半;虽然这可能不是一个宽度为50的重要因素,但它在较大的尺寸上会产生更明显的差异。

参考: